class ActiveModelSerializers::Adapter::JsonApi::PaginationLinks

def as_json

def as_json
  per_page = collection.try(:per_page) || collection.try(:limit_value) || collection.size
  pages_from.each_with_object({}) do |(key, value), hash|
    params = query_parameters.merge(page: { number: value, size: per_page }).to_query
    hash[key] = "#{url(adapter_options)}?#{params}"
  end
end

def initialize(collection, adapter_options)

def initialize(collection, adapter_options)
  @collection = collection
  @adapter_options = adapter_options
  @context = adapter_options.fetch(:serialization_context) do
    fail MissingSerializationContextError, <<-EOF.freeze
::PaginationLinks requires a ActiveModelSerializers::SerializationContext.
pass a ':serialization_context' option or
e CollectionSerializer#paginated? to return 'false'.
     EOF
  end
end

def pages_from

def pages_from
  return {} if collection.total_pages <= FIRST_PAGE
  {}.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
      pages[:last] = collection.total_pages
    end
  end
end

def query_parameters

def query_parameters
  @query_parameters ||= context.query_parameters
end

def request_url

def request_url
  @request_url ||= context.request_url
end

def url(options)

def url(options)
  @url ||= options.fetch(:links, {}).fetch(:self, nil) || request_url
end