class Pexels::PaginatedResponse
Attributes
attrs[R]
data[R]
page[R]
per_page[R]
response[R]
total_results[R]
Public Class Methods
new(response)
click to toggle source
# File lib/pexels/paginated_response.rb, line 14 def initialize(response) @response = response @attrs = @response.body @total_results = attrs.fetch('total_results', nil) @page = attrs.fetch('page') @per_page = attrs.fetch('per_page') @prev_page = attrs.fetch('prev_page', nil) @next_page = attrs.fetch('next_page', nil) end
Public Instance Methods
each(&block)
click to toggle source
# File lib/pexels/paginated_response.rb, line 29 def each(&block) if block_given? data.each(&block) else to_enum(:each) end end
next_page()
click to toggle source
# File lib/pexels/paginated_response.rb, line 37 def next_page return unless @next_page request.params[:page] = extract_page(@next_page) self.class.new(request.call) end
prev_page()
click to toggle source
# File lib/pexels/paginated_response.rb, line 44 def prev_page return unless @prev_page request.params[:page] = extract_page(@next_page) self.class.new(request.call) end
total_pages()
click to toggle source
# File lib/pexels/paginated_response.rb, line 25 def total_pages total_results.fdiv(per_page).ceil end
Private Instance Methods
extract_page(url)
click to toggle source
# File lib/pexels/paginated_response.rb, line 59 def extract_page(url) CGI.parse(URI.parse(url).query)['page'].first end
request()
click to toggle source
# File lib/pexels/paginated_response.rb, line 55 def request response.request end