module Github::Pagination

A module that decorates response with pagination helpers

Public Instance Methods

auto_paginate(auto=false) click to toggle source

Iterate over results set pages by automatically calling `next_page` until all pages are exhausted. Caution needs to be exercised when using this feature - 100 pages iteration will perform 100 API calls. By default this is off. You can set it on the client, individual API instances or just per given request.

# File lib/github_api/pagination.rb, line 24
def auto_paginate(auto=false)
  if (current_api.auto_pagination? || auto) && self.body.is_a?(Array)
    resources_bodies = []
    each_page { |resource| resources_bodies += resource.body }
    self.body = resources_bodies
  end
  self
end
count_pages() click to toggle source

Retrive number of total pages base on current :per_page parameter

# File lib/github_api/pagination.rb, line 14
def count_pages
  page_iterator.count.to_i
end
each_page() { |self| ... } click to toggle source

Iterator like each for response pages. If there are no pages to iterate over this method will return current page.

# File lib/github_api/pagination.rb, line 35
def each_page
  yield self
  while page_iterator.has_next?
    yield next_page
  end
end
first_page() click to toggle source

Retrives the result of the first page. Returns nil if there is no first page - either because you are already on the first page or there are no pages at all in the result.

# File lib/github_api/pagination.rb, line 45
def first_page
  first_request = page_iterator.first
  self.instance_eval { @env = first_request.env } if first_request
  first_request
end
has_next_page?() click to toggle source

Returns true if there is another page in the result set, otherwise false

# File lib/github_api/pagination.rb, line 89
def has_next_page?
  page_iterator.has_next?
end
last_page() click to toggle source

Retrives the result of the last page. Returns nil if there is no last page - either because you are already on the last page, there is only one page or there are no pages at all in the result.

# File lib/github_api/pagination.rb, line 71
def last_page
  last_request = page_iterator.last
  self.instance_eval { @env = last_request.env } if last_request
  last_request
end
next_page() click to toggle source

Retrives the result of the next page. Returns nil if there is no next page or no pages at all.

# File lib/github_api/pagination.rb, line 53
def next_page
  next_request = page_iterator.next
  self.instance_eval { @env = next_request.env } if next_request
  next_request
end
page(page_number) click to toggle source

Retrives a specific result for a page given page number. The page_number parameter is not validate, hitting a page that does not exist will return Github API error. Consequently, if there is only one page, this method returns nil

# File lib/github_api/pagination.rb, line 81
def page(page_number)
  request = page_iterator.get_page(page_number)
  self.instance_eval { @env = request.env } if request
  request
end
prev_page() click to toggle source

Retrives the result of the previous page. Returns nil if there is no previous page or no pages at all.

# File lib/github_api/pagination.rb, line 61
def prev_page
  prev_request = page_iterator.prev
  self.instance_eval { @env = prev_request.env } if prev_request
  prev_request
end
Also aliased as: previous_page
previous_page()
Alias for: prev_page