class FrederickAPI::V2::Helpers::Paginator
Custom paginator for json api client Fixes param names for pagination Also adds ability to get all records from a paginated API
Public Instance Methods
all_records()
click to toggle source
# File lib/frederick_api/v2/helpers/paginator.rb, line 13 def all_records current_result_set = nil results = self.result_set.to_a first_resource = self.result_set.first (total_pages - current_page).times do first_resource.class.with_headers(first_resource.custom_headers) do current_result_set = current_result_set ? current_result_set.pages.next : self.result_set.pages.next raise 'next link not found' unless current_result_set results.push(*current_result_set.to_a) end end results end
current_page()
click to toggle source
# File lib/frederick_api/v2/helpers/paginator.rb, line 47 def current_page params.fetch("page.#{page_param}", 1).to_i end
per_page()
click to toggle source
# File lib/frederick_api/v2/helpers/paginator.rb, line 41 def per_page params.fetch("page.#{per_page_param}") do result_set.length end.to_i end
total_pages()
click to toggle source
# File lib/frederick_api/v2/helpers/paginator.rb, line 29 def total_pages if links['last'] uri = result_set.links.link_url_for('last') last_params = params_for_uri(uri) last_params.fetch("page.#{page_param}") do current_page end.to_i else current_page end end