class JsonApiClient::Paginating::Paginator

Attributes

params[R]
result_set[R]

Public Class Methods

new(result_set, data) click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 12
def initialize(result_set, data)
  @params = params_for_uri(result_set.uri)
  @result_set = result_set
  @links = data["links"]
end

Public Instance Methods

current_page() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 62
def current_page
  params.fetch(page_param, 1).to_i
end
first() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 26
def first
  result_set.links.fetch_link("first")
end
last() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 30
def last
  result_set.links.fetch_link("last")
end
limit_value()
Alias for: per_page
next() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 18
def next
  result_set.links.fetch_link("next")
end
next_page() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 74
def next_page
  current_page < total_pages ? (current_page + 1) : nil
end
offset() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 52
def offset
  per_page * (current_page - 1)
end
out_of_bounds?() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 66
def out_of_bounds?
  current_page > total_pages
end
per_page() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 56
def per_page
  params.fetch(per_page_param) do
    result_set.length
  end.to_i
end
Also aliased as: limit_value
prev() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 22
def prev
  result_set.links.fetch_link("prev")
end
previous_page() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 70
def previous_page
  current_page > 1 ? (current_page - 1) : nil
end
total_count() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 50
def total_count; total_entries; end
total_entries() click to toggle source

this number may be off

# File lib/json_api_client/paginating/paginator.rb, line 47
def total_entries
  per_page * total_pages
end
total_pages() click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 34
def total_pages
  if links["last"]
    uri = result_set.links.link_url_for("last")
    last_params = params_for_uri(uri)
    last_params.fetch(page_param) do
      current_page
    end.to_i
  else
    current_page
  end
end

Protected Instance Methods

params_for_uri(uri) click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 82
def params_for_uri(uri)
  return {} unless uri
  uri = Addressable::URI.parse(uri)
  ( uri.query_values || {} ).with_indifferent_access
end