Sha256: 5f79e8c2d30e805b61b48d7a9a66b488c542aed0bb7a85430ae38f836c4e218a
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
require 'twitter' module TwitterCache class Client include TwitterCache::Helpers attr_reader :tokens def initialize(tokens = nil) @tokens = tokens 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 def twitter @twitter ||= ::Twitter::REST::Client.new(config.twitter.dup.merge(tokens)) 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
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
twitter-cache-0.1.0 | lib/twitter_cache/client.rb |