Module: Onebox::Engine::StandardEmbed

Included in:
WhitelistedGenericOnebox, YoutubeOnebox
Defined in:
lib/onebox/engine/standard_embed.rb

Instance Method Summary collapse

Instance Method Details

#rawObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/onebox/engine/standard_embed.rb', line 5

def raw
  return @raw if @raw
  response = fetch_response(url)

  html_doc = Nokogiri::HTML(response.body)

  # Determine if we should use OEmbed or OpenGraph
  oembed_alternate = html_doc.at("//link[@type='application/json+oembed']") || html_doc.at("//link[@type='text/json+oembed']")
  if oembed_alternate
    # If the oembed request fails, we can still try the opengraph below.
    begin
      @raw = Onebox::Helpers.symbolize_keys(::MultiJson.load(fetch_response(oembed_alternate['href']).body))
    rescue Errno::ECONNREFUSED, Net::HTTPError, MultiJson::LoadError
      @raw = nil
    end
  end

  open_graph = OpenGraph.new(response.body, false)
  if @raw
    @raw[:image] = open_graph.images.first if @raw[:image].nil? && open_graph && open_graph.images

    return @raw
  end

  @raw = open_graph
end