class RestClientWrapper::Paginator::HeaderLink

HeaderLink

HeaderLink

Attributes

rest_client[RW]

Public Class Methods

new(per_page: Paginate::DEFAULT_PAGINATION_PAGE_SIZE) click to toggle source
# File lib/rest_client_wrapper/paginators/header_link.rb, line 34
def initialize(per_page: Paginate::DEFAULT_PAGINATION_PAGE_SIZE)
  @rest_client = nil
  @config = { page: nil, per_page: per_page }
end

Public Instance Methods

paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false) { |response| ... } click to toggle source
# File lib/rest_client_wrapper/paginators/header_link.rb, line 39
def paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false)
  raise RestClientError.new("Client not set, unable to make API call", nil, nil) unless @rest_client

  query_params.reverse_merge!(@config)
  responses = []
  loop.with_index(1) do |_, page|
    query_params[:page] = page
    response = @rest_client.make_request({ http_method: http_method, uri: uri, segment_params: segment_params, query_params: query_params, headers: headers })
    block_given? ? yield(response) : (responses << response)
    links = _pagination_links(response)
    break unless links.key?(:next)
  end
  return data ? responses.map(&:body).flatten : responses
end

Private Instance Methods