Class: Client::TwitterClient

Inherits:
Object
  • Object
show all
Defined in:
lib/favt/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ TwitterClient

Returns a new instance of TwitterClient.



17
18
19
20
21
22
23
# File 'lib/favt/client.rb', line 17

def initialize(options)
  yaml_file = options["config_file"] || "config.yaml"      
  @render = options["render"] || Favt::Render
  @options = options 
  @config = YAML.load_file(yaml_file)
  self.init_client
end

Instance Method Details

#favorite_postsObject



47
48
49
50
51
52
53
# File 'lib/favt/client.rb', line 47

def favorite_posts
  show_fav_posts = self.to_set(self.favorites_from_user.sort do
    |prev_post, next_post| next_post.id <=> prev_post.id
  end)
  
  return self.take(show_fav_posts)
end

#favorites_from_userObject



25
26
27
28
29
30
# File 'lib/favt/client.rb', line 25

def favorites_from_user
  users = self.target_users
  return users.flat_map do |user|
    @client.favorites user
  end
end

#init_clientObject



7
8
9
10
11
12
13
14
15
# File 'lib/favt/client.rb', line 7

def init_client
  keys = @config["client"]
  @client = Twitter::REST::Client.new do |config|
    config.consumer_key = keys["consumer_key"]
    config.consumer_secret = keys["consumer_secret"]
    config.access_token = keys["access_token"]
    config.access_token_secret = keys["access_token_secret"]
  end
end

#renderObject



68
69
70
71
72
73
# File 'lib/favt/client.rb', line 68

def render
  self.favorite_posts.each do |_, favorite|
    print @render.new(favorite, @options, @config).to_s
    print "\n"
  end
end

#take(set_fav_posts) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/favt/client.rb', line 32

def take(set_fav_posts)
  show_count = @options["show_count"].to_i || 0
  if show_count != 0
    return set_fav_posts.take(show_count)
  end
  return set_fav_posts
end

#target_usersObject



40
41
42
43
44
45
# File 'lib/favt/client.rb', line 40

def target_users
  if !@options["user"]
    return @config["users"]
  end
  return [@options["user"]]
end

#to_set(favorites) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/favt/client.rb', line 55

def to_set(favorites)
  favorites_dict = {}
  favorites.each do |favorite|
    if !(favorites_dict.key? favorite.id)
      favorites_dict[favorite.id] = {
        "users" => 1, "post" => favorite}
    else
      favorites_dict[favorite.id]["users"] += 1
    end
  end
  return favorites_dict
end