Class: OEmbedCache

Inherits:
ApplicationRecord 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(opts) ⇒ Object


15
16
17
18
19
20
# File 'app/models/o_embed_cache.rb', line 15

def self.find_or_create_by(opts)
 cache = OEmbedCache.find_or_initialize_by(opts)
 return cache if cache.persisted?
 cache.fetch_and_save_oembed_data! # make after create callback and drop this method ?
 cache
end

Instance Method Details

#fetch_and_save_oembed_data!Object


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

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

Returns:

  • (Boolean)

38
39
40
# File 'app/models/o_embed_cache.rb', line 38

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

#is_trusted_and_has_html?Boolean

Returns:

  • (Boolean)

34
35
36
# File 'app/models/o_embed_cache.rb', line 34

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

#options_hash(prefix = 'thumbnail_') ⇒ Object


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

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