class LightSide::Pager
Attributes
collection[RW]
next_url[RW]
params[RW]
previous_url[RW]
resource_builder[RW]
resource_url[RW]
url[RW]
Public Class Methods
new(model_class, params={})
click to toggle source
# File lib/lightside/pager.rb, line 7 def initialize(model_class, params={}) self.resource_url = model_class.resource_url self.resource_builder = lambda { |hash| model_class.new(hash) } self.params = { page: 1 }.merge(params) self.collection = [] self.url = resource_path end
Public Instance Methods
count()
click to toggle source
# File lib/lightside/pager.rb, line 15 def count collection.length end
each() { |instance| ... }
click to toggle source
# File lib/lightside/pager.rb, line 19 def each collection.each { |instance| yield instance } end
fetch()
click to toggle source
# File lib/lightside/pager.rb, line 23 def fetch self.collection = [] fetch_page self end
fetch_page()
click to toggle source
# File lib/lightside/pager.rb, line 29 def fetch_page RestClient.get(url, Config.headers) do |response, request, result| case response.code when 200 parsed_response = JSON.parse(response) self.next_url = parsed_response["next"] self.previous_url = parsed_response["previous"] parsed_response["results"].each do |resource| collection << resource_builder.call(resource) end end end end
less?()
click to toggle source
# File lib/lightside/pager.rb, line 43 def less? !!previous_url end
more?()
click to toggle source
# File lib/lightside/pager.rb, line 47 def more? !!next_url end
next()
click to toggle source
# File lib/lightside/pager.rb, line 51 def next raise "no more results" unless more? self.url = next_url fetch end
page_number()
click to toggle source
# File lib/lightside/pager.rb, line 57 def page_number params.fetch(:page, 1).to_i end
previous()
click to toggle source
# File lib/lightside/pager.rb, line 61 def previous raise "no more results" unless less? self.url = previous_url fetch end
resource_path()
click to toggle source
# File lib/lightside/pager.rb, line 67 def resource_path URI.join(resource_url, "?#{URI.encode_www_form(params)}").to_s end