class Nimbu::Pagination::PageIterator
Constants
- ATTRIBUTES
Setup attribute accesor for all the link types
Attributes
current_api[R]
Public Class Methods
new(links, current_api)
click to toggle source
# File lib/nimbu-api/pagination/page_iterator.rb, line 22 def initialize(links, current_api) @links = links @current_api = current_api update_page_links @links end
Public Instance Methods
count()
click to toggle source
# File lib/nimbu-api/pagination/page_iterator.rb, line 32 def count return nil unless last_page_uri parse_query(URI(last_page_uri).query)['page'] end
first()
click to toggle source
Perform http get request for the first resource
# File lib/nimbu-api/pagination/page_iterator.rb, line 39 def first return nil unless first_page_uri page_uri = URI(first_page_uri) params = parse_query(page_uri.query) if next_page < 1 params['sha'] = 'master' if params.keys.include?('sha') params['per_page'] = parse_per_page_number(first_page_uri) else params['page'] = parse_page_number(first_page_uri) params['per_page'] = parse_per_page_number(first_page_uri) end response = page_request(page_uri.path, params) update_page_links response.links response end
get_page(page_number)
click to toggle source
Returns the result for a specific page.
# File lib/nimbu-api/pagination/page_iterator.rb, line 105 def get_page(page_number) # Find URI that we can work with, if we cannot get the first or the # last page URI then there is only one page. page_uri = first_page_uri || last_page_uri return nil unless page_uri params = parse_query URI(page_uri).query params['page'] = page_number params['per_page'] = parse_per_page_number(page_uri) response = page_request URI(page_uri).path, params update_page_links response.links response end
has_next?()
click to toggle source
# File lib/nimbu-api/pagination/page_iterator.rb, line 28 def has_next? next_page == 0 || !next_page_uri.nil? end
last()
click to toggle source
Perform http get request for the last resource
# File lib/nimbu-api/pagination/page_iterator.rb, line 91 def last return nil unless last_page_uri page_uri = URI(last_page_uri) params = parse_query(page_uri.query) params['page'] = parse_page_number(last_page_uri) params['per_page'] = parse_per_page_number(last_page_uri) response = page_request(page_uri.path, params) update_page_links response.links response end
next()
click to toggle source
Perform http get request for the next resource
# File lib/nimbu-api/pagination/page_iterator.rb, line 58 def next return nil unless has_next? page_uri = URI(next_page_uri) params = parse_query(page_uri.query) if next_page < 1 params['sha'] = params['last_sha'] if params.keys.include?('last_sha') params['per_page'] = parse_per_page_number(next_page_uri) else params['page'] = parse_page_number(next_page_uri) params['per_page'] = parse_per_page_number(next_page_uri) end response = page_request(page_uri.path, params) update_page_links response.links response end
prev()
click to toggle source
Perform http get request for the previous resource
# File lib/nimbu-api/pagination/page_iterator.rb, line 77 def prev return nil unless prev_page_uri page_uri = URI(prev_page_uri) params = parse_query(page_uri.query) params['page'] = parse_page_number(prev_page_uri) params['per_page'] = parse_per_page_number(prev_page_uri) response = page_request(page_uri.path, params) update_page_links response.links response end