class Client::Paginator

Attributes

api_client[RW]
last_page_number[R]
next_page_number[R]
page_size[R]
prev_page_number[R]
total_results[R]

Public Class Methods

new(api_client) click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 7
def initialize(api_client)
  @api_client = api_client

  process_response
end

Public Instance Methods

http_client() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 17
def http_client
  api_client.http_client
end
include_remaining_pages() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 113
def include_remaining_pages
  response = api_client.response.dup
  response.concat(remaining_pages_get)
end
logger() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 13
def logger
  api_client.logger
end
next_page?() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 80
def next_page?
  @has_next_page
end
next_page_get(_next_page_number = @next_page_number) click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 84
def next_page_get(_next_page_number = @next_page_number)
  page_get(_next_page_number)
end
page_get(page_number) click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 88
def page_get(page_number)
  logger.debug { "Getting Page #{page_number} of #{last_page_number}" }
  new_request = request.class.new(request_args_out.merge('_page' => page_number), request_options_out)
  _response = new_request.execute
  process_response
  _response
end
pages_get(pages, options = { }) click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 96
def pages_get(pages, options = { })
  consolidate = options.fetch(:consolidate, true)
  pages = pages.to_a if pages.respond_to?(:to_a)
  pages_out = pages.map { |v| page_get(v) }
  pages_out.flatten! if consolidate
  pages_out
end
paginated?() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 76
def paginated?
  @paginated
end
prev_page?() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 104
def prev_page?
  @has_prev_page
end
prev_page_get(_prev_page_number = @prev_page_number) click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 108
def prev_page_get(_prev_page_number = @prev_page_number)
  return [ ] unless paginated?
  page_get(_prev_page_number)
end
process_response() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 21
def process_response
  http_response = http_client.response

  @total_results = http_response['total']
  @paginated = !!total_results

  process_link_header(http_response['links']) if paginated?
end
remaining_pages_get() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 118
def remaining_pages_get
  return [ ] unless paginated? && next_page?
  _next_page_number = @next_page_number
  remaining_results = [ ]

  loop do
    response = next_page_get(_next_page_number)
    break unless response.is_a?(Array)
    remaining_results.concat(response)

    break unless next_page?
    _next_page_number = next_page_number
  end
  remaining_results
end
request() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 64
def request
  @request ||= api_client.request
end
request_args_out() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 68
def request_args_out
  @request_args_out ||= request.initial_arguments.dup
end
request_options_out() click to toggle source
# File lib/ubiquity/wiredrive/api/v2/client/paginator.rb, line 72
def request_options_out
  @request_options_out ||= { :client => api_client }.merge request.initial_options.dup
end