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
has_next_page?()
Alias for: next_page?
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