class FreckleIO::Request::MultiplePages

Attributes

last_responses[R]
params[R]
path[R]

Public Instance Methods

get(path, params: {}) click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 10
def get(path, params: {})
  @path ||= path
  @params ||= default_params.merge(params).compact

  retrieve_all_pages

  self
end

Private Instance Methods

client() click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 51
def client
  @client ||= Connection.new
end
default_params() click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 55
def default_params
  {
    per_page: FreckleIO.configuration.per_page
  }
end
first_page() click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 37
def first_page
  @first_page ||= first_single_page.get(
    path,
    params: params
  )
  @first_response = @first_page.last_response

  @first_page
end
first_single_page() click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 47
def first_single_page
  @first_single_page ||= SinglePage.new
end
retrieve_all_pages() click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 21
def retrieve_all_pages
  @last_responses ||= client.get_in_parallel(
    path,
    2,
    total_pages,
    params: params
  )

  @last_responses.unshift([@first_response])
  @last_responses.flatten!
end
total_pages() click to toggle source
# File lib/freckle_io/request/multiple_pages.rb, line 33
def total_pages
  @total_pages ||= first_page.total_pages
end