Sha256: b604d3611a20bb6c7e2d1d1a309d20b3202dddf76c98285e0b878cdd495bca73
Contents?: true
Size: 1.51 KB
Versions: 2
Compression:
Stored size: 1.51 KB
Contents
module ActiveModel class Serializer class Adapter class JsonApi < Adapter class PaginationLinks FIRST_PAGE = 1 attr_reader :collection, :context def initialize(collection, context) @collection = collection @context = context end def serializable_hash(options = {}) pages_from.each_with_object({}) do |(key, value), hash| params = query_parameters.merge(page: { number: value, size: collection.size }).to_query hash[key] = "#{url(options)}?#{params}" end end private def pages_from {}.tap do |pages| pages[:self] = collection.current_page unless collection.current_page == FIRST_PAGE pages[:first] = FIRST_PAGE pages[:prev] = collection.current_page - FIRST_PAGE end unless collection.current_page == collection.total_pages pages[:next] = collection.current_page + FIRST_PAGE end pages[:last] = collection.total_pages end end def url(options) @url ||= options.fetch(:links, {}).fetch(:self, nil) || original_url end def original_url @original_url ||= context.original_url[/\A[^?]+/] end def query_parameters @query_parameters ||= context.query_parameters end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cheap_ams-0.10.6 | lib/active_model/serializer/adapter/json_api/pagination_links.rb |
cheap_ams-0.10.5 | lib/active_model/serializer/adapter/json_api/pagination_links.rb |