Sha256: 3772cbaaea19015c248dc452fb75da0d9df892e969f1041b14f0620359536d9c
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
module Twitter module Cache class Wrapper include Twitter::Cache::Helpers attr_reader :twitter def initialize(twitter) @twitter = twitter end def user(id = current_id) cache.get(user_key(id), ttl: config.ttl) do config.convert_user(twitter.user(id)) end end def friend_ids(id = current_id) cache.get(friends_key(id), ttl: config.ttl) do twitter.friend_ids(id).to_a end end def friends(id = current_id, per: 100, page: 0) ids = friend_ids(id) case page when :rand, :random users(ids.sample(per)) else start = per * page users(ids[start, per]) end end def users(ids) users = ids.map { |id| cache.get(user_key(id)) }.compact return users if ids.count == users.count fetch_users(ids) end def current_user @current_user ||= twitter.current_user end def current_id current_user.id end protected def user_key(id) "user:#{id}" end def friends_key(id) "friends:#{id}" end def fetch_users(ids) users = twitter.users(ids).map { |raw| config.convert_user(raw) } users.each do |user| cache.set(user_key(user.id), user, ttl: config.ttl) end users end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
twitter-cache-0.2.1 | lib/twitter/cache/wrapper.rb |
twitter-cache-0.2.0 | lib/twitter/cache/wrapper.rb |