class Camper::PaginatedResponse
Wrapper class of paginated response.
Attributes
client[RW]
Public Class Methods
new(array)
click to toggle source
# File lib/camper/paginated_response.rb, line 13 def initialize(array) @array = array end
Public Instance Methods
==(other)
click to toggle source
# File lib/camper/paginated_response.rb, line 17 def ==(other) @array == other end
auto_paginate(limit = nil, &block)
click to toggle source
# File lib/camper/paginated_response.rb, line 34 def auto_paginate(limit = nil, &block) limit = count if limit.nil? return lazy_paginate.take(limit).to_a unless block_given? lazy_paginate.take(limit).each(&block) end
count()
click to toggle source
# File lib/camper/paginated_response.rb, line 21 def count @pagination_data.total_count end
inspect()
click to toggle source
# File lib/camper/paginated_response.rb, line 25 def inspect @array.inspect end
next_page()
click to toggle source
# File lib/camper/paginated_response.rb, line 46 def next_page return nil if @client.nil? || !has_next_page? @client.get(@pagination_data.next, override_path: true) end
next_page?()
click to toggle source
# File lib/camper/paginated_response.rb, line 41 def next_page? !(@pagination_data.nil? || @pagination_data.next.nil?) end
Also aliased as: has_next_page?
parse_headers!(headers)
click to toggle source
# File lib/camper/paginated_response.rb, line 29 def parse_headers!(headers) @pagination_data = PaginationData.new headers logger.debug("Pagination data: #{@pagination_data.inspect}") end
Private Instance Methods
each_page() { |current| ... }
click to toggle source
rubocop:enable Lint/ToEnumArguments
# File lib/camper/paginated_response.rb, line 60 def each_page current = self yield current while current.has_next_page? current = current.next_page yield current end end
lazy_paginate()
click to toggle source
rubocop:disable Lint/ToEnumArguments
# File lib/camper/paginated_response.rb, line 55 def lazy_paginate to_enum(:each_page).lazy.flat_map(&:to_ary) end