Module: Mingle::Twitter

Defined in:
app/models/mingle/twitter.rb

Defined Under Namespace

Classes: Fetch, Tweet

Class Method Summary collapse

Class Method Details

.clientObject

Initialize the Twitter client.

Returns a new Twitter::REST::Client instance.



37
38
39
40
41
42
43
44
# File 'app/models/mingle/twitter.rb', line 37

def client
  Twitter::REST::Client.new do |config|
    config.consumer_key        = Mingle.config.twitter_api_key
    config.consumer_secret     = Mingle.config.twitter_api_secret
    config.access_token        = Mingle.config.twitter_access_token
    config.access_token_secret = Mingle.config.twitter_access_token_secret
  end
end

.fetch(hashtags = Mingle::Hashtag.all, since_id = Mingle::Twitter::Tweet.ordered.last.try(:tweet_id)) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/models/mingle/twitter.rb', line 9

def fetch hashtags = Mingle::Hashtag.all, since_id = Mingle::Twitter::Tweet.ordered.last.try(:tweet_id)
  hashtags = Array(hashtags)

  hashtags.map do |hashtag|
    client.search(hashtag.tag_name_with_hash, since_id: since_id).collect do |data|
      tweet = Tweet.find_or_initialize_by tweet_id: data.id.to_s

      tweet.attributes = {
        created_at: data.created_at,
        image_url: data.media.any? ? data.media.first.media_url_https.to_s : nil,
        text: data.text,
        user_id: data.user.id.to_s,
        user_handle: data.user.screen_name,
        user_image_url: data.user.profile_image_url.to_s,
        user_name: data.user.name
      }

      tweet.hashtags << hashtag unless tweet.hashtags.include? hashtag

      tweet.save!
      tweet
    end
  end.flatten
end

.table_name_prefixObject



5
6
7
# File 'app/models/mingle/twitter.rb', line 5

def table_name_prefix
  "#{Mingle.table_name_prefix}twitter_"
end