Module: Zendesk2::PagedCollection
- Included in:
- Categories, Forums, Groups, HelpCenter::Articles, HelpCenter::Categories, HelpCenter::Posts, HelpCenter::Sections, HelpCenter::Subscriptions, HelpCenter::Translations, Memberships, Organizations, TicketAudits, TicketComments, Tickets, TopicComments, Topics, Users, Views
- Defined in:
- lib/zendesk2/paged_collection.rb
Overview
adds #create! method to Cistern::Collection.
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#all(params = {}) ⇒ Object
Fetch a collection of resources.
-
#all_entries ⇒ Array<Zendesk2::Model>
Iterate over all pages and collect every entry.
- #collection_method ⇒ Object
- #collection_root ⇒ Object
-
#create(attributes = {}) ⇒ Zendesk::Model, FalseClass
Quietly attempt creation of resource.
-
#create!(attributes = {}) ⇒ Zendesk::Model
Attempt creation of resource and explode if unsuccessful.
- #each_entry ⇒ Object
- #each_page ⇒ Object
-
#get(*args) ⇒ Zendesk2::Model, NilClass
Quiet version of #get!.
-
#get!(identity_or_hash) ⇒ Zendesk2::Model
Fetch a single of resource.
- #model_method ⇒ Object
- #model_root ⇒ Object
- #new_page ⇒ Object
- #next_page ⇒ Object
- #previous_page ⇒ Object
Class Method Details
.included(klass) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/zendesk2/paged_collection.rb', line 4 def self.included(klass) klass.send(:attribute, :count) klass.send(:attribute, :next_page_link, aliases: 'next_page') klass.send(:attribute, :previous_page_link, aliases: 'previous_page') klass.send(:extend, ClassMethods) end |
Instance Method Details
#all(params = {}) ⇒ Object
Fetch a collection of resources
102 103 104 105 106 107 108 109 |
# File 'lib/zendesk2/paged_collection.rb', line 102 def all(params = {}) if search_query?(params) search_page(params) else collection_page(params) end self end |
#all_entries ⇒ Array<Zendesk2::Model>
Iterate over all pages and collect every entry
97 98 99 |
# File 'lib/zendesk2/paged_collection.rb', line 97 def all_entries each_entry.to_a end |
#collection_method ⇒ Object
20 21 22 |
# File 'lib/zendesk2/paged_collection.rb', line 20 def collection_method self.class.collection_method end |
#collection_root ⇒ Object
24 25 26 |
# File 'lib/zendesk2/paged_collection.rb', line 24 def collection_root self.class.collection_root end |
#create(attributes = {}) ⇒ Zendesk::Model, FalseClass
Quietly attempt creation of resource. Check #new_record? and #errors for success
89 90 91 92 |
# File 'lib/zendesk2/paged_collection.rb', line 89 def create(attributes = {}) model = new(attributes.merge(Zendesk2.stringify_keys(self.attributes))) model.save end |
#create!(attributes = {}) ⇒ Zendesk::Model
Attempt creation of resource and explode if unsuccessful
80 81 82 83 |
# File 'lib/zendesk2/paged_collection.rb', line 80 def create!(attributes = {}) model = new(Zendesk2.stringify_keys(attributes).merge(Zendesk2.stringify_keys(self.attributes))) model.save! end |
#each_entry ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/zendesk2/paged_collection.rb', line 51 def each_entry return to_enum(:each_entry) unless block_given? page = self while page page.to_a.each { |r| yield r } page = page.next_page end end |
#each_page ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/zendesk2/paged_collection.rb', line 42 def each_page return to_enum(:each_page) unless block_given? page = self while page yield page page = page.next_page end end |
#get(*args) ⇒ Zendesk2::Model, NilClass
Quiet version of #get!
146 147 148 149 150 |
# File 'lib/zendesk2/paged_collection.rb', line 146 def get(*args) get!(*args) rescue Zendesk2::Error nil end |
#get!(identity) ⇒ Zendesk2::Model #get!(scope) ⇒ Zendesk2::Model
Fetch a single of resource
126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/zendesk2/paged_collection.rb', line 126 def get!(identity_or_hash) scoped_attributes = self.class.scopes.inject({}) { |a, e| a.merge(e.to_s => send(e)) } if identity_or_hash.is_a?(Hash) scoped_attributes.merge!(identity_or_hash) else scoped_attributes['id'] = identity_or_hash end scoped_attributes = { model_root => scoped_attributes } data = cistern.send(model_method, scoped_attributes).body[model_root] new(data) if data end |
#model_method ⇒ Object
28 29 30 |
# File 'lib/zendesk2/paged_collection.rb', line 28 def model_method self.class.model_method end |
#model_root ⇒ Object
32 33 34 |
# File 'lib/zendesk2/paged_collection.rb', line 32 def model_root self.class.model_root end |
#new_page ⇒ Object
36 37 38 39 40 |
# File 'lib/zendesk2/paged_collection.rb', line 36 def new_page page = self.class.new(cistern: cistern) page.merge_attributes(self.class.scopes.inject({}) { |a, e| a.merge(e.to_s => public_send(e)) }) page end |
#next_page ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/zendesk2/paged_collection.rb', line 60 def next_page return nil unless next_page_link = { 'url' => next_page_link } ['filtered'] = filtered if respond_to?(:filtered) # searchable new_page.all() end |
#previous_page ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/zendesk2/paged_collection.rb', line 68 def previous_page return nil unless previous_page_link = { 'url' => previous_page_link } ['filtered'] = filtered if respond_to?(:filtered) # searchable new_page.all() end |