Class: FlickVimeo::Video

Inherits:
Object
  • Object
show all
Defined in:
lib/flickvimeo/video.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id) ⇒ Video

Returns a new instance of Video.



9
10
11
12
13
# File 'lib/flickvimeo/video.rb', line 9

def initialize(id)
  @clip_id = vimeo_id(id)
  @url     = "http://vimeo.com/moogaloop/load/clip:#{@clip_id}/local/"
  @codec = 'h264'
end

Instance Attribute Details

#clip_idObject

Returns the value of attribute clip_id.



7
8
9
# File 'lib/flickvimeo/video.rb', line 7

def clip_id
  @clip_id
end

#urlObject

Returns the value of attribute url.



7
8
9
# File 'lib/flickvimeo/video.rb', line 7

def url
  @url
end

Instance Method Details

#configObject



38
39
40
41
42
43
# File 'lib/flickvimeo/video.rb', line 38

def config
  @config ||= begin
    response = http_request(@url)
    Nokogiri::XML.parse(response.body)
  end
end

#http_request(url) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/flickvimeo/video.rb', line 56

def http_request(url)
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)

  request = Net::HTTP::Get.new(uri.request_uri)
  request["User-Agent"] = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4"

  response = http.request(request)
end

#qualityObject



34
35
36
# File 'lib/flickvimeo/video.rb', line 34

def quality
  config.search('video isHD').text == '1' ? 'hd' : 'sd'
end

#signatureObject



30
31
32
# File 'lib/flickvimeo/video.rb', line 30

def signature
  config.search('request_signature').text
end

#timestampObject



26
27
28
# File 'lib/flickvimeo/video.rb', line 26

def timestamp
  config.search('timestamp').text
end

#video_file_urlObject



19
20
21
22
23
24
# File 'lib/flickvimeo/video.rb', line 19

def video_file_url
  @video_file_url ||= begin
    response = http_request(video_redirect_url)
    response['Location']
  end
end

#video_redirect_urlObject



15
16
17
# File 'lib/flickvimeo/video.rb', line 15

def video_redirect_url
  "http://player.vimeo.com/play_redirect?quality=#{quality}&codecs=#{@codec}&clip_id=#{clip_id}&time=#{timestamp}&sig=#{signature}&type=html5_desktop_local"
end

#vimeo_id(id) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/flickvimeo/video.rb', line 45

def vimeo_id(id)
  case id.to_s
  when %r{^http://.*vimeo.com.*[#/](\d+)}
    $1
  when /^\d+$/
    id
  else
    raise "Unknown id format: #{id}"
  end
end