class ActivePivot::Api::PaginatedCollection

Attributes

endpoint[R]
params[R]

Public Class Methods

new(endpoint, params = {}) click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 11
def initialize(endpoint, params = {})
  @endpoint = endpoint
  @params   = params
end

Public Instance Methods

all() click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 16
def all
  pages.flat_map(&:parsed_response)
end
pages() click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 20
def pages
  [first_page] + subsequent_pages
end

Private Instance Methods

first_page() click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 39
def first_page
  @first_page ||= send_request(params)
end
multiple_pages?() click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 35
def multiple_pages?
  total_pages > 1
end
print_request_error() click to toggle source
send_request(params = {}) click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 43
def send_request(params = {})
  Request.get(endpoint, params).tap do |response|
    print_request_error unless response.success?
  end
end
subsequent_pages() click to toggle source
# File lib/active_pivot/api/paginated_collection.rb, line 26
def subsequent_pages
  return [] unless multiple_pages?

  (2..total_pages).map do |page|
    offset = limit * (page - 1)
    send_request(params.merge(offset: offset))
  end
end