class VzaarApi::Lib::PagedResource
Attributes
collection[R]
meta[R]
query[R]
resource_class[R]
resource_url[R]
scope_id[R]
Public Class Methods
new(query = {})
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 8 def initialize(query = {}) @query = query.dup @resource_class = @query.delete(:resource_class) @resource_url = @query.delete(:resource_url) @scope_id = @query.delete(:scope_id) @loaded = false end
Public Instance Methods
each_item() { |record| ... }
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 20 def each_item return enum_for :each_item unless block_given? begin each { |record| yield record } end while !self.next.empty? end
first()
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 27 def first loaded? ? load_page_url(:first) : load! end
last()
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 39 def last load_page_url :last end
loaded?()
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 16 def loaded? @loaded end
next()
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 31 def next load_page_url :next end
previous()
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 35 def previous load_page_url :previous end
Private Instance Methods
build_collection(items)
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 76 def build_collection(items) items.map do |attrs| attrs = scope_id ? attrs.merge(scope_id: scope_id) : attrs resource_class.new attrs end end
each() { |record| ... }
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 64 def each return enum_for :each unless block_given? load! unless collection collection.each { |record| yield record } end
load!()
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 45 def load! @loaded = true load_from_url resource_url, query end
load_from_url(url, query = {})
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 70 def load_from_url(url, query = {}) response = Api.new.get(url, query) @meta = response.meta @collection = build_collection response.data end
load_page_url(page)
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 50 def load_page_url(page) load! unless loaded? if url = meta_link(page) load_from_url meta[:links][page] else [] end end
meta_link(page)
click to toggle source
# File lib/vzaar_api/lib/paged_resource.rb, line 59 def meta_link(page) return unless meta meta[:links][page] end