Class: TwitterCache::Client

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/twitter_cache/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#cache, #config

Constructor Details

#initialize(access_token: nil, access_token_secret: nil) {|_self| ... } ⇒ Client

Returns a new instance of Client.

Yields:

  • (_self)

Yield Parameters:



8
9
10
11
12
# File 'lib/twitter_cache/client.rb', line 8

def initialize(access_token: nil, access_token_secret: nil)
  @access_token = access_token
  @access_token_secret = access_token_secret
  yield(self) if block_given?
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



6
7
8
# File 'lib/twitter_cache/client.rb', line 6

def access_token
  @access_token
end

#access_token_secretObject

Returns the value of attribute access_token_secret.



6
7
8
# File 'lib/twitter_cache/client.rb', line 6

def access_token_secret
  @access_token_secret
end

Instance Method Details

#current_idObject



47
48
49
# File 'lib/twitter_cache/client.rb', line 47

def current_id
  current_user.id
end

#current_userObject



43
44
45
# File 'lib/twitter_cache/client.rb', line 43

def current_user
  @current_user ||= twitter.current_user
end

#friend_ids(id = current_id) ⇒ Object



20
21
22
23
24
# File 'lib/twitter_cache/client.rb', line 20

def friend_ids(id = current_id)
  cache.get(friends_key(id), ttl: config.ttl) do
    twitter.friend_ids(id).to_a
  end
end

#friends(id = current_id, per: 100, page: 0) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/twitter_cache/client.rb', line 26

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

#twitterObject



51
52
53
54
55
56
57
58
# File 'lib/twitter_cache/client.rb', line 51

def twitter
  @twitter ||= ::Twitter::REST::Client.new(config.twitter) do |conf|
    if token_given?
      conf.access_token = access_token
      conf.access_token_secret = access_token_secret
    end
  end
end

#user(id = current_id) ⇒ Object



14
15
16
17
18
# File 'lib/twitter_cache/client.rb', line 14

def user(id = current_id)
  cache.get(user_key(id), ttl: config.ttl) do
    config.convert_user(twitter.user(id))
  end
end

#users(ids) ⇒ Object



37
38
39
40
41
# File 'lib/twitter_cache/client.rb', line 37

def users(ids)
  users = ids.map { |id| cache.get(user_key(id)) }.compact
  return users if ids.count == users.count
  fetch_users(ids)
end