Class: OEmbedCache

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/o_embed_cache.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_or_create_by_url(url) ⇒ Object



13
14
15
16
17
18
# File 'app/models/o_embed_cache.rb', line 13

def self.find_or_create_by_url(url)
 cache = OEmbedCache.find_or_initialize_by_url(url)
 return cache if cache.persisted?
 cache.fetch_and_save_oembed_data!
 cache
end

Instance Method Details

#fetch_and_save_oembed_data!Object



20
21
22
23
24
25
26
27
28
29
30
# File 'app/models/o_embed_cache.rb', line 20

def fetch_and_save_oembed_data!
  begin
    response = OEmbed::Providers.get(self.url, {:maxwidth => 420, :maxheight => 420, :frame => 1, :iframe => 1})
  rescue => e
    # noop
  else
    self.data = response.fields
    self.data['trusted_endpoint_url'] = response.provider.endpoint
    self.save
  end
end

#from_trusted?Boolean



36
37
38
# File 'app/models/o_embed_cache.rb', line 36

def from_trusted?
  SECURE_ENDPOINTS.include?(self.data['trusted_endpoint_url'])
end

#is_trusted_and_has_html?Boolean



32
33
34
# File 'app/models/o_embed_cache.rb', line 32

def is_trusted_and_has_html?
  self.from_trusted? and self.data.has_key?('html')
end

#options_hash(prefix = 'thumbnail_') ⇒ Object



40
41
42
43
44
45
46
47
# File 'app/models/o_embed_cache.rb', line 40

def options_hash(prefix = 'thumbnail_')
  return nil unless self.data.has_key?(prefix + 'url')
  {
    :height => self.data.fetch(prefix + 'height', ''),
    :width => self.data.fetch(prefix + 'width', ''),
    :alt => self.data.fetch('title', ''),
  }
end