class JsonApiPaginator
Attributes
links[R]
meta[R]
params[R]
result_set[R]
Public Class Methods
new(result_set, data)
click to toggle source
# File lib/json_api_paginator.rb, line 6 def initialize(result_set, data) @params = params_for_uri(result_set.uri) @result_set = result_set @links = data['links'] || {} @meta = data['meta'] || {} end
Public Instance Methods
current_page()
click to toggle source
# File lib/json_api_paginator.rb, line 48 def current_page (params['page']['number'] || 1).to_i end
first()
click to toggle source
# File lib/json_api_paginator.rb, line 21 def first links['first'] ? result_set.links.fetch_link('first') : nil end
last()
click to toggle source
# File lib/json_api_paginator.rb, line 25 def last links['last'] ? result_set.links.fetch_link('last') : nil end
next()
click to toggle source
# File lib/json_api_paginator.rb, line 13 def next links['next'] ? result_set.links.fetch_link('next') : nil end
next_page()
click to toggle source
# File lib/json_api_paginator.rb, line 56 def next_page current_page < total_pages ? (current_page + 1) : nil end
per_page()
click to toggle source
# File lib/json_api_paginator.rb, line 44 def per_page params['page']['size'].to_i end
prev()
click to toggle source
# File lib/json_api_paginator.rb, line 17 def prev links['prev'] ? result_set.links.fetch_link('prev') : nil end
previous_page()
click to toggle source
# File lib/json_api_paginator.rb, line 52 def previous_page current_page > 1 ? (current_page - 1) : nil end
total_entries()
click to toggle source
# File lib/json_api_paginator.rb, line 39 def total_entries meta['total_count'].to_i || per_page * total_pages end
Also aliased as: total_count
total_pages()
click to toggle source
# File lib/json_api_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['page']['number'].to_i else current_page end end
Private Instance Methods
params_for_uri(uri)
click to toggle source
# File lib/json_api_paginator.rb, line 62 def params_for_uri(uri) return {} unless uri uri = Addressable::URI.parse(uri) Rack::Utils.parse_nested_query(uri.query || '') end