lib/onebox/engine/vimeo_onebox.rb in onebox-1.9.23 vs lib/onebox/engine/vimeo_onebox.rb in onebox-1.9.24

- old
+ new

@@ -4,28 +4,27 @@ module Engine class VimeoOnebox include Engine include StandardEmbed - # only match private Vimeo video links - matches_regexp(/^https?:\/\/(www\.)?vimeo\.com\/\d+\/[^\/]+?$/) + matches_regexp(/^https?:\/\/(www\.)?vimeo\.com\/\d+/) always_https WIDTH ||= 640 HEIGHT ||= 360 def placeholder_html - image_src = og_data.image_secure_url || og_data.image_url - "<img src='#{image_src}' width='#{WIDTH}' height='#{HEIGHT}' #{og_data.title_attr}>" + ::Onebox::Helpers.video_placeholder_html end def to_html - video_src = og_data.video_secure_url || og_data.video_url - if video_src.nil? - id = uri.path[/\/(\d+)/, 1] - video_src = "https://player.vimeo.com/video/#{id}" + video_id = oembed_data[:video_id] + if video_id.nil? + # for private videos + video_id = uri.path[/\/(\d+)/, 1] end + video_src = "https://player.vimeo.com/video/#{video_id}" video_src = video_src.gsub('autoplay=1', '').chomp("?") <<-HTML <iframe width="#{WIDTH}" height="#{HEIGHT}" src="#{video_src}" @@ -35,9 +34,16 @@ </iframe> HTML end private + + def oembed_data + response = Onebox::Helpers.fetch_response("https://vimeo.com/api/oembed.json?url=#{url}") + @oembed_data = Onebox::Helpers.symbolize_keys(::MultiJson.load(response)) + rescue + "{}" + end def og_data @og_data = get_opengraph end end