class SocialFeedAgregator::TwitterReader
Attributes
consumer_key[RW]
consumer_secret[RW]
twitter_name[RW]
twitter_oauth_token[RW]
twitter_oauth_token_secret[RW]
Public Class Methods
new(options={})
click to toggle source
Calls superclass method
BaseReader::new
# File lib/social_feed_agregator/twitter_reader.rb, line 14 def initialize(options={}) super(options) options.replace(SocialFeedAgregator.default_options.merge(options)) @consumer_key = options[:twitter_consumer_key] @consumer_secret = options[:twitter_consumer_secret] @oauth_token = options[:twitter_oauth_token] @token_secret = options[:twitter_oauth_token_secret] @name = options[:twitter_user_name] end
Public Instance Methods
get_feeds(options={}) { |feed| ... }
click to toggle source
Calls superclass method
BaseReader#get_feeds
# File lib/social_feed_agregator/twitter_reader.rb, line 26 def get_feeds(options={}) super(options) @name = options[:name] if options[:name] count = options[:count] || 100 from_date = options[:from_date] || DateTime.new(1970,1,1) client = ::Twitter.configure do |config| config.consumer_key = @consumer_key config.consumer_secret = @consumer_secret config.oauth_token = @oauth_token config.oauth_token_secret = @token_secret end feeds, i = [], 0 count_per_request = 200 #::Twitter::REST::API::Timelines::MAX_TWEETS_PER_REQUEST opts = {count: count < count_per_request ? count : count_per_request} parts = (count.to_f / count_per_request).ceil while (statuses = client.user_timeline(@name, opts)) && i < parts do i+=1 statuses.each do |status| # Break if the date is less if status.created_at <= from_date i = parts break end feed = fill_feed status block_given? ? yield(feed) : feeds << feed new_count = count - count_per_request * i opts[:count] = new_count < count_per_request ? new_count : count_per_request opts[:max_id] = status.id.to_s end end feeds end
Private Instance Methods
fill_feed(status)
click to toggle source
# File lib/social_feed_agregator/twitter_reader.rb, line 72 def fill_feed(status) tweet_type, picture_url, link = 'status', '', '' if status.entities? if status.media.any? photo_entity = status.media.first tweet_type = 'photo' picture_url = photo_entity.media_url end if status.urls.any? url_entity = status.urls.first tweet_type = 'link' link = url_entity.url end end feed = Feed.new( feed_type: :twitter, feed_id: status.id.to_s, user_id: status.user.id, user_name: status.user.screen_name, permalink: "https://twitter.com/#{status.user.screen_name}/status/#{status.id}", #status.url, message: status.text, created_at: status.created_at, type: tweet_type, picture_url: picture_url, link: link ) end