Class: Favt::TwitterClient

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

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ TwitterClient

Returns a new instance of TwitterClient.



19
20
21
22
23
24
25
26
# File 'lib/favt.rb', line 19

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

  self.init_client()
end

Instance Method Details

#favorite_postsObject



50
51
52
53
54
55
56
# File 'lib/favt.rb', line 50

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



28
29
30
31
32
33
# File 'lib/favt.rb', line 28

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

#init_clientObject



9
10
11
12
13
14
15
16
17
# File 'lib/favt.rb', line 9

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



71
72
73
74
75
# File 'lib/favt.rb', line 71

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

#take(set_fav_posts) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/favt.rb', line 35

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



43
44
45
46
47
48
# File 'lib/favt.rb', line 43

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

#to_set(favorites) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/favt.rb', line 58

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