class PDC::Response::Paginator

Public Instance Methods

parse(json) click to toggle source
# File lib/pdc/http/response/pagination.rb, line 7
def parse(json)
  logger.debug "\n.....paginate json ....................................."

  metadata = json[:metadata]
  logger.debug metadata
  return json unless paginated?(metadata)

  metadata[PDC::Resource::PAGINATION] = {
    resource_count:   metadata.delete(:count),
    # TODO: decide if this is okay to discard the
    # schema://host:port/ of the next and previous
    next_page:        request_uri(metadata.delete(:next)),
    previous_page:    request_uri(metadata.delete(:previous))
  }

  logger.debug '... after parsing pagination data:'
  logger.debug metadata
  json
end

Private Instance Methods

paginated?(metadata) click to toggle source
# File lib/pdc/http/response/pagination.rb, line 34
def paginated?(metadata)
  metadata[:count].is_a?(Numeric) &&
    metadata.key?(:next) &&
    metadata.key?(:previous)
end
request_uri(uri) click to toggle source
# File lib/pdc/http/response/pagination.rb, line 29
def request_uri(uri)
  return unless uri
  URI(uri).request_uri
end