lib/twitter/cursor.rb in twitter-5.5.1 vs lib/twitter/cursor.rb in twitter-5.6.0
- old
+ new
@@ -1,72 +1,73 @@
require 'twitter/enumerable'
+require 'twitter/utils'
module Twitter
class Cursor
include Twitter::Enumerable
+ include Twitter::Utils
attr_reader :attrs
alias_method :to_h, :attrs
- alias_method :to_hash, :attrs
- alias_method :to_hsh, :attrs
+ deprecate_alias :to_hash, :to_h
+ deprecate_alias :to_hsh, :to_h
class << self
# Construct a new Cursor object from a response hash
#
# @param response [Hash]
# @param key [String, Symbol] The key to fetch the data from the response
# @param klass [Class] The class to instantiate objects in the response
- # @param client [Twitter::REST::Client]
- # @param request_method [String, Symbol]
- # @param path [String]
- # @param options [Hash]
+ # @param request [Twitter::Request]
# @return [Twitter::Cursor]
- def from_response(response, key, klass, client, request_method, path, options) # rubocop:disable ParameterLists
- new(response[:body], key, klass, client, request_method, path, options)
+ def from_response(response, key, klass, request)
+ new(response[:body], key, klass, request)
end
end
# Initializes a new Cursor
#
# @param attrs [Hash]
# @param key [String, Symbol] The key to fetch the data from the response
# @param klass [Class] The class to instantiate objects in the response
- # @param client [Twitter::REST::Client]
- # @param request_method [String, Symbol]
- # @param path [String]
- # @param options [Hash]
+ # @param request [Twitter::Request]
# @return [Twitter::Cursor]
- def initialize(attrs, key, klass, client, request_method, path, options = {}) # rubocop:disable ParameterLists
+ def initialize(attrs, key, klass, request)
@key = key.to_sym
@klass = klass
- @client = client
- @request_method = request_method.to_sym
- @path = path
- @options = options
+ @client = request.client
+ @request_method = request.verb
+ @path = request.path
+ @options = request.options
@collection = []
self.attrs = attrs
end
private
+ # @return [Integer]
def next_cursor
@attrs[:next_cursor] || -1
end
alias_method :next, :next_cursor
# @return [Boolean]
def last?
next_cursor.zero?
end
+ # @return [Hash]
def fetch_next_page
response = @client.send(@request_method, @path, @options.merge(:cursor => next_cursor))
self.attrs = response[:body]
end
+ # @param attrs [Hash]
+ # @return [Hash]
def attrs=(attrs)
@attrs = attrs
Array(attrs[@key]).each do |element|
@collection << (@klass ? @klass.new(element) : element)
end
+ @attrs
end
end
end