class Middleman::TwitterOembed::Interface

Public Class Methods

new(options = {}) click to toggle source
# File lib/middleman-twitter-oembed/interface.rb, line 5
def initialize(options = {})
  @use_cache = options[:use_cache] || true
  @cache_dir = options[:cache_dir] || "./caches/twitter_oembed"
  @omit_script = options[:omit_script] || false
  
  @result_cache = {}
end

Public Instance Methods

get_tweet(status_id) click to toggle source
# File lib/middleman-twitter-oembed/interface.rb, line 12
def get_tweet(status_id)
  return @result_cache[status_id] if @result_cache.has_key?(status_id)
  return @result_cache[status_id] = load_cache(status_id) if @use_cache && File.exist?(cache_filename(status_id))
  
  url = "https://api.twitter.com/1/statuses/oembed.json?id=#{h(status_id)}"
  url += "&omit_script=true" if @omit_script
  begin
    require 'open-uri'
    require 'json'

    res = JSON.parse(open(url).read)
    ## yet to rescue
  end

  @result_cache[status_id] = res
  save_cache(status_id, res) if @use_cache

  return res
end

Private Instance Methods

cache_filename(status_id) click to toggle source
# File lib/middleman-twitter-oembed/interface.rb, line 32
def cache_filename(status_id)
  File.join(@cache_dir, status_id)
end
load_cache(status_id) click to toggle source
# File lib/middleman-twitter-oembed/interface.rb, line 35
def load_cache(status_id)
  Marshal.load(File.read(cache_filename(status_id)))
end
save_cache(status_id, res) click to toggle source
# File lib/middleman-twitter-oembed/interface.rb, line 38
def save_cache(status_id, res)
  dir = File.dirname(cache_filename(status_id))

  require 'fileutils'
  FileUtils.mkdir_p(dir) unless File.exists?(dir)
  File.open(cache_filename(status_id), 'wb'){|f| f.write(Marshal.dump(res))}
end