class Ubiquity::Envoi::API::Client::Paginator
Attributes
api_client[RW]
logger[RW]
Public Class Methods
new(api_client, options = { })
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 5 def initialize(api_client, options = { }) @api_client = api_client initialize_logger(options) end
Public Instance Methods
current_page()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 21 def current_page @current_page ||= last_response['page'] end
http_client()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 25 def http_client api_client.http_client end
include_remaining_pages()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 29 def include_remaining_pages # response = api_client.response.dup @first_page = current_page _results = last_results _results.concat(remaining_pages_get) _per_page = _results.length last_response.merge({ 'page' => @first_page, 'perPage' => _per_page, 'results' => _results }) end
initialize_logger(args = {})
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 10 def initialize_logger(args = {}) @logger = args[:logger] ||= Logger.new(args[:log_to] || STDOUT) log_level = args[:log_level] if log_level _logger = @logger.dup _logger.level = log_level @logger = _logger end @logger end
last_response()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 38 def last_response @last_response ||= api_client.http_client.response_parsed end
last_results()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 42 def last_results @last_results ||= last_response['results'] end
next_page?()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 46 def next_page? current_page < total_pages end
next_page_get(_next_page_number = nil)
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 50 def next_page_get(_next_page_number = nil) _next_page_number ||= next_page_number page_get(_next_page_number) end
next_page_number()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 55 def next_page_number @next_page_number ||= current_page + 1 end
page_get(page_number)
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 63 def page_get(page_number) logger.debug { "Getting Page #{page_number} of #{total_pages}" } new_request = request.class.new(request_args_out.merge('_page' => page_number), request_options_out) _response = new_request.execute process_response end
page_size()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 59 def page_size @page_size ||= last_response['perPage'] end
pages_get(pages, options = { })
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 70 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/envoi/api/client/paginator.rb, line 78 def paginated? @paginated = !!total_results end
process_request()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 82 def process_request @current_page = nil @total_results = nil @has_next_page = nill end
process_response()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 88 def process_response @current_page = nil @last_response = nil @next_page_number = nil @page_size = nil @total_pages = nil @total_results = nil @paginated = !!total_results @last_results = last_response['results'] end
remaining_pages_get()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 130 def remaining_pages_get return [ ] unless paginated? && next_page? remaining_results = [ ] loop do response = next_page_get remaining_results.concat(response) break unless next_page? end remaining_results end
request()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 100 def request api_client.request end
request_args_out()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 104 def request_args_out @request_args_out ||= request.initial_arguments.dup end
request_options_out()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 108 def request_options_out @request_options_out ||= { :client => api_client }.merge request.initial_options.dup end
total_pages()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 112 def total_pages @total_pages ||= begin logger.debug { "Page Size: #{page_size}" } logger.debug { "Total Results: #{total_results}" } div = total_results / page_size mod = total_results % page_size remainder = div == mod ? 0 : 1 _total_pages = div + remainder logger.debug { "Total Pages: #{_total_pages}" } _total_pages end end
total_results()
click to toggle source
# File lib/ubiquity/envoi/api/client/paginator.rb, line 126 def total_results @total_results ||= last_response['total'] end