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)