Class: Mailchimp::Collection
- Inherits:
-
Array
- Object
- Array
- Mailchimp::Collection
show all
- Includes:
- Paging
- Defined in:
- lib/mailchimp_api_v3/collection.rb,
lib/mailchimp_api_v3/collection/paging.rb
Defined Under Namespace
Modules: Paging
Constant Summary
Constants included
from Paging
Paging::DEFAULT_PAGE_SIZE
Instance Method Summary
collapse
Methods included from Paging
#fetch_options, #find_each, #find_in_pages, #invalidate_current_page, #offset, #page, #page_array, #page_children, #page_size, #parse_options
Constructor Details
#initialize(client, parent_path = '', options = {}) ⇒ Collection
Returns a new instance of Collection.
7
8
9
10
11
12
13
|
# File 'lib/mailchimp_api_v3/collection.rb', line 7
def initialize(client, parent_path = '', options = {})
@client = client
@parent_path = parent_path
parse_options(options)
super page_children
end
|
Instance Method Details
#count ⇒ Object
15
16
17
|
# File 'lib/mailchimp_api_v3/collection.rb', line 15
def count
page['total_items']
end
|
#create(data) ⇒ Object
41
42
43
44
|
# File 'lib/mailchimp_api_v3/collection.rb', line 41
def create(data)
response = @client.post path, data
self.class::CHILD_CLASS.new @client, response, path
end
|
#create_or_update(data) ⇒ Object
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/mailchimp_api_v3/collection.rb', line 52
def create_or_update(data)
clean_data = data.deep_stringify_keys
if clean_data.key? 'id'
instance = self.class::CHILD_CLASS.get @client, path, clean_data.delete('id')
instance ? instance.update(clean_data) : create(clean_data)
else
find_by(clean_data) || create(clean_data)
end
end
|
#find_by(data) ⇒ Object
36
37
38
39
|
# File 'lib/mailchimp_api_v3/collection.rb', line 36
def find_by(data)
instances = where(data, 1)
instances ? instances.first : nil
end
|
#first_or_create(data) ⇒ Object
46
47
48
49
50
|
# File 'lib/mailchimp_api_v3/collection.rb', line 46
def first_or_create(data)
instance = find_by(data)
return instance if instance
create(data)
end
|
#name_field ⇒ Object
63
64
65
|
# File 'lib/mailchimp_api_v3/collection.rb', line 63
def name_field
self.class.const_defined?(:NAME_FIELD) ? self.class::NAME_FIELD : 'name'
end
|
#path ⇒ Object
19
20
21
|
# File 'lib/mailchimp_api_v3/collection.rb', line 19
def path
@path ||= "#{@parent_path}/#{self.class::PATH_KEY}"
end
|
#where(data, limit = nil) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/mailchimp_api_v3/collection.rb', line 23
def where(data, limit = nil)
instances = []
find_each do |instance|
if instance.matches? data
instances << instance
break if instances.count == limit
end
end
instances
end
|