Sha256: b3448d3c980af4721654f4b0909dae1ce8141c50963626b9119e53848d9ad770

Contents?: true

Size: 935 Bytes

Versions: 1

Compression:

Stored size: 935 Bytes

Contents

# NOTE: It's important to cache duped objects
module Earthquake
  module Twitter
    attr_reader :twitter
  end

  init do
    @twitter = TwitterOAuth::Client.new(config.slice(:consumer_key, :consumer_secret, :token, :secret))

    filter do |item|
      next if item["text"].nil? || item["disable_cache"]
      Earthquake.cache.write("status:#{item["id"]}", item.dup, :expires_in => 1.hour.ago)
    end
  end

  once do
    class ::TwitterOAuth::Client
      [:status, :info].each do |m|
        define_method("#{m}_with_cache") do |*args|
          key = "#{m}:#{args.join(',')}"
          if result = Earthquake.cache.read(key)
            result.dup
          else
            result = __send__(:"#{m}_without_cache", *args)
            Earthquake.cache.write(key, result.dup, :expires_in => 1.hour.ago)
            result
          end
        end
        alias_method_chain m, :cache
      end
    end
  end

  extend Twitter
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
earthquake-0.4.6 lib/earthquake/twitter.rb