Class: TwitterClient

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

Instance Method Summary collapse

Constructor Details

#initialize(consumer_key:, consumer_secret:, access_token:, access_token_secret:, search_query:) ⇒ TwitterClient

Returns a new instance of TwitterClient.



6
7
8
9
10
11
12
13
14
# File 'lib/slack_twitter_egosa/twitter_client.rb', line 6

def initialize(consumer_key:, consumer_secret:, access_token:, access_token_secret:, search_query:)
  @client = Twitter::REST::Client.new do |config|
    config.consumer_key        = consumer_key
    config.consumer_secret     = consumer_secret
    config.access_token        = access_token
    config.access_token_secret = access_token_secret
  end
  @search_query = search_query
end

Instance Method Details

#home_timelineObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/slack_twitter_egosa/twitter_client.rb', line 16

def home_timeline
  is_first_fetch = @home_timeline_since_id.nil?

  params = { count: 200, tweet_mode: 'extended' }
  params[:since_id] = @home_timeline_since_id if @home_timeline_since_id
  statuses = @client.home_timeline(params).to_a
  @home_timeline_since_id = statuses.first.id unless statuses.empty?

  # Tweets acquired for the first time are not subject to notification
  return [] if is_first_fetch

  statuses
rescue Twitter::Error::TooManyRequests, HTTP::ConnectionError => e
  warn "home_timeline: #{e.inspect}"
  []
end

#searchObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/slack_twitter_egosa/twitter_client.rb', line 33

def search
  return [] if @search_query.empty?

  is_first_fetch = @search_since_id.nil?

  params = { result_type: 'recent', count: 100, tweet_mode: 'extended' }
  params[:since_id] = @search_since_id if @search_since_id
  statuses = @client.search(@search_query, params).to_a
  @search_since_id = statuses.first.id unless statuses.empty?

  # Tweets acquired for the first time are not subject to notification
  return [] if is_first_fetch

  statuses
rescue Twitter::Error::TooManyRequests, HTTP::ConnectionError => e
  warn "search: #{e.inspect}"
  []
end