lib/zendesk2/paged_collection.rb in zendesk2-1.4.1 vs lib/zendesk2/paged_collection.rb in zendesk2-1.4.2
- old
+ new
@@ -12,13 +12,12 @@
def collection_root; self.class.collection_root; end
def model_method; self.class.model_method; end
def model_root; self.class.model_root; end
def new_page
- page = self.clone
- %w[count next_page_link previous_page_link].each { |k| page.attributes.delete(k) }
- page.records = []
+ page = self.class.new(connection: self.connection)
+ page.merge_attributes(self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))})
page
end
def each_page
return to_enum(:each_page) unless block_given?
@@ -37,15 +36,15 @@
page = page.next_page
end
end
def next_page
- new_page.all("url" => next_page_link) if next_page_link
+ new_page.all("url" => next_page_link, "filtered" => self.filtered) if next_page_link
end
def previous_page
- new_page.all("url" => previous_page_link) if previous_page_link
+ new_page.all("url" => previous_page_link, "filtered" => self.filtered) if previous_page_link
end
# Attempt creation of resource and explode if unsuccessful
# @raise [Zendesk2::Error] if creation was unsuccessful
# @return [Cistern::Model]
@@ -62,14 +61,20 @@
model.save
end
# Fetch a collection of resources
def all(params={})
- scoped_attributes = self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))}.merge(params)
- body = connection.send(collection_method, scoped_attributes).body
+ if params["filtered"] && (url = params["url"])
+ uri = Addressable::URI.parse(url)
+ query = uri.query_values
+ search(query.delete("query"), query)
+ else
+ scoped_attributes = self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))}.merge(params)
+ body = connection.send(collection_method, scoped_attributes).body
- self.load(body[collection_root])
- self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
+ self.load(body[collection_root]) # 'results' is the key for paged seraches
+ self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
+ end
self
end
# Fetch a single of resource
# @overload get!(identity)