Class: RestClientWrapper::Paginator::HeaderLink

Inherits:
Object
  • Object
show all
Defined in:
lib/rest_client_wrapper/paginators/header_link.rb,
lib/rest_client_wrapper/paginators/header_link_paginator.rb

Overview

HeaderLink

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(per_page: Paginate::DEFAULT_PAGINATION_PAGE_SIZE) ⇒ HeaderLink

Returns a new instance of HeaderLink.



34
35
36
37
# 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

Instance Attribute Details

#rest_clientObject

Returns the value of attribute rest_client.



32
33
34
# File 'lib/rest_client_wrapper/paginators/header_link.rb', line 32

def rest_client
  @rest_client
end

Instance Method Details

#paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false) ⇒ Object

Raises:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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