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
# File lib/active_pivot/api/paginated_collection.rb, line 49 def print_request_error puts "Pivotal request failed. Endpoint #{endpoint} invalid with params: #{params}" end
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