Sha256: 8990aaf3c496785010f8d852503fb37c8eacdf825baa8b71af2b59090a273fbf

Contents?: true

Size: 707 Bytes

Versions: 3

Compression:

Stored size: 707 Bytes

Contents

require "twitter"

module AllTweets
  class Collector
    def initialize(hash)
      @client = Twitter::REST::Client.new(hash)
    end

    def get_all_tweets(user, include_retweets: false)
      collect_with_max_id do |max_id|
        options = { count: 200, include_rts: include_retweets }
        options[:max_id] = max_id unless max_id.nil?
        @client.user_timeline(user, options)
      end
    end

    private
    def collect_with_max_id(collection=[], max_id = nil, &block)
      response = yield(max_id)
      collection += response
      if response.empty?
        collection.flatten
      else
        collect_with_max_id(collection, response.last.id - 1, &block)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
alltweets-1.0.2 lib/alltweets/collector.rb
alltweets-1.0.1 lib/alltweets/collector.rb
alltweets-1.0.0 lib/alltweets/collector.rb