bronto 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/bronto/base.rb +27 -14
- data/lib/bronto/contact.rb +4 -3
- data/lib/bronto/delivery.rb +2 -2
- data/lib/bronto/list.rb +2 -1
- data/lib/bronto/version.rb +1 -1
- metadata +2 -2
data/lib/bronto/base.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Bronto
|
2
2
|
class Base
|
3
|
-
attr_accessor :id, :errors
|
3
|
+
attr_accessor :id, :api_key, :errors
|
4
4
|
|
5
5
|
# Getter/Setter for global API Key.
|
6
6
|
def self.api_key=(api_key)
|
@@ -22,8 +22,9 @@ module Bronto
|
|
22
22
|
# If a symbol is passed in, it is converted to "method_plural_class_name" (e.g., :read => read_lists). A string
|
23
23
|
# method is used as-is.
|
24
24
|
# Pass in a block and assign a hash to soap.body with a structure appropriate to the method call.
|
25
|
-
def self.request(method, refresh_header = false, &_block)
|
26
|
-
_soap_header = self.soap_header(refresh_header)
|
25
|
+
def self.request(method, api_key = nil, refresh_header = false, &_block)
|
26
|
+
_soap_header = self.soap_header(api_key, refresh_header)
|
27
|
+
api_key = api_key || self.api_key
|
27
28
|
|
28
29
|
method = "#{method}_#{plural_class_name}" if method.is_a? Symbol
|
29
30
|
|
@@ -47,11 +48,11 @@ module Bronto
|
|
47
48
|
|
48
49
|
# Helper method to retrieve the session ID and return a SOAP header.
|
49
50
|
# Will return a header with the same initial session ID unless the `refresh` argument is `true`.
|
50
|
-
def self.soap_header(refresh = false)
|
51
|
+
def self.soap_header(api_key, refresh = false)
|
51
52
|
return @soap_header if !refresh and @soap_header.present?
|
52
53
|
|
53
54
|
resp = api.request(:v4, :login) do
|
54
|
-
soap.body = { api_token:
|
55
|
+
soap.body = { api_token: api_key }
|
55
56
|
end
|
56
57
|
|
57
58
|
@soap_header = { "v4:sessionHeader" => { session_id: resp.body[:login_response][:return] } }
|
@@ -61,6 +62,8 @@ module Bronto
|
|
61
62
|
# Objects without IDs are considered new and are `create`d; objects with IDs are considered existing and are `update`d.
|
62
63
|
def self.save(*objs)
|
63
64
|
objs = objs.flatten
|
65
|
+
api_key = objs.first.is_a?(String) ? objs.shift : self.api_key
|
66
|
+
|
64
67
|
updates = []
|
65
68
|
creates = []
|
66
69
|
|
@@ -72,8 +75,10 @@ module Bronto
|
|
72
75
|
end
|
73
76
|
|
74
77
|
# Finds objects matching the `filter` (a Bronto::Filter instance).
|
75
|
-
def self.find(filter = Bronto::Filter.new, page_number = 1)
|
76
|
-
|
78
|
+
def self.find(filter = Bronto::Filter.new, page_number = 1, api_key = nil)
|
79
|
+
api_key = api_key || self.api_key
|
80
|
+
|
81
|
+
resp = request(:read, api_key) do
|
77
82
|
soap.body = { filter: filter.to_hash, page_number: page_number }
|
78
83
|
end
|
79
84
|
|
@@ -85,10 +90,12 @@ module Bronto
|
|
85
90
|
#
|
86
91
|
# Returns the same collection of objects that was passed in. Objects whose creation succeeded will be assigned the
|
87
92
|
# ID returned from Bronto.
|
93
|
+
# The first element passed in can be a string containing the API key; if none passed, will fall back to the global key.
|
88
94
|
def self.create(*objs)
|
89
95
|
objs = objs.flatten
|
96
|
+
api_key = objs.first.is_a?(String) ? objs.shift : self.api_key
|
90
97
|
|
91
|
-
resp = request(:add) do
|
98
|
+
resp = request(:add, api_key) do
|
92
99
|
soap.body = {
|
93
100
|
plural_class_name => objs.map(&:to_hash)
|
94
101
|
}
|
@@ -109,10 +116,12 @@ module Bronto
|
|
109
116
|
|
110
117
|
# Updates a collection of Bronto::Base objects. The objects should exist on the remote server.
|
111
118
|
# The object should implement `to_hash` to return a hash in the format expected by the SOAP API.
|
119
|
+
# The first element passed in can be a string containing the API key; if none passed, will fall back to the global key.
|
112
120
|
def self.update(*objs)
|
113
121
|
objs = objs.flatten
|
122
|
+
api_key = objs.first.is_a?(String) ? objs.shift : self.api_key
|
114
123
|
|
115
|
-
resp = request(:update) do
|
124
|
+
resp = request(:update, api_key) do
|
116
125
|
soap.body = {
|
117
126
|
plural_class_name => objs.map(&:to_hash)
|
118
127
|
}
|
@@ -126,10 +135,13 @@ module Bronto
|
|
126
135
|
#
|
127
136
|
# Returns the same collection of objects that was passed in. Objects whose destruction succeeded will
|
128
137
|
# have a nil ID.
|
138
|
+
#
|
139
|
+
# The first element passed in can be a string containing the API key; if none passed, will fall back to the global key.
|
129
140
|
def self.destroy(*objs)
|
130
141
|
objs = objs.flatten
|
142
|
+
api_key = objs.first.is_a?(String) ? objs.shift : self.api_key
|
131
143
|
|
132
|
-
resp = request(:delete) do
|
144
|
+
resp = request(:delete, api_key) do
|
133
145
|
soap.body = {
|
134
146
|
plural_class_name => objs.map { |o| { id: o.id }}
|
135
147
|
}
|
@@ -148,6 +160,7 @@ module Bronto
|
|
148
160
|
|
149
161
|
# Accepts a hash whose keys should be setters on the object.
|
150
162
|
def initialize(options = {})
|
163
|
+
self.api_key = self.class.api_key
|
151
164
|
self.errors = Errors.new
|
152
165
|
options.each { |k,v| send("#{k}=", v) if respond_to?("#{k}=") }
|
153
166
|
end
|
@@ -159,7 +172,7 @@ module Bronto
|
|
159
172
|
|
160
173
|
# Convenience instance method that calls the class `request` method.
|
161
174
|
def request(method, &block)
|
162
|
-
self.class.request(method, &block)
|
175
|
+
self.class.request(method, self.api_key, false, &block)
|
163
176
|
end
|
164
177
|
|
165
178
|
def reload
|
@@ -186,18 +199,18 @@ module Bronto
|
|
186
199
|
|
187
200
|
# Creates the object. See `Bronto::Base.create` for more info.
|
188
201
|
def create
|
189
|
-
res = self.class.create(self)
|
202
|
+
res = self.class.create(self.api_key, self)
|
190
203
|
res.first
|
191
204
|
end
|
192
205
|
|
193
206
|
# Updates the object. See `Bronto::Base.update` for more info.
|
194
207
|
def update
|
195
|
-
self.class.update(self).first
|
208
|
+
self.class.update(self.api_key, self).first
|
196
209
|
end
|
197
210
|
|
198
211
|
# Destroys the object. See `Bronto::Base.destroy` for more info.
|
199
212
|
def destroy
|
200
|
-
self.class.destroy(self).first
|
213
|
+
self.class.destroy(self.api_key, self).first
|
201
214
|
end
|
202
215
|
end
|
203
216
|
end
|
data/lib/bronto/contact.rb
CHANGED
@@ -7,13 +7,13 @@ module Bronto
|
|
7
7
|
# only that you should keep increasing the number until no more contacts are returned.
|
8
8
|
# * `fields` can be an array of field IDs or an array of Field objects.
|
9
9
|
# * `include_lists` determines whether to include the list IDs each contact belongs to.
|
10
|
-
def self.find(filter = Bronto::Filter.new, page_number = 1, fields = nil, include_lists = false)
|
10
|
+
def self.find(filter = Bronto::Filter.new, page_number = 1, fields = nil, include_lists = false, api_key = nil)
|
11
11
|
body = { filter: filter.to_hash, page_number: page_number }
|
12
12
|
|
13
13
|
body[:fields] = Array.wrap(fields).map { |f| f.is_a?(Bronto::Field) ? f.id : f } if Array(fields).length > 0
|
14
14
|
body[:include_lists] = include_lists
|
15
15
|
|
16
|
-
resp = request(:read) do
|
16
|
+
resp = request(:read, api_key) do
|
17
17
|
soap.body = body
|
18
18
|
end
|
19
19
|
|
@@ -22,8 +22,9 @@ module Bronto
|
|
22
22
|
|
23
23
|
def self.save(*objs)
|
24
24
|
objs = objs.flatten
|
25
|
+
api_key = objs.first.is_a?(String) ? objs.shift : self.api_key
|
25
26
|
|
26
|
-
resp = request(:add_or_update) do
|
27
|
+
resp = request(:add_or_update, api_key) do
|
27
28
|
soap.body = {
|
28
29
|
plural_class_name => objs.map(&:to_hash)
|
29
30
|
}
|
data/lib/bronto/delivery.rb
CHANGED
@@ -8,11 +8,11 @@ module Bronto
|
|
8
8
|
# only that you should keep increasing the number until no more contacts are returned.
|
9
9
|
# * `fields` can be an array of field IDs or an array of Field objects.
|
10
10
|
# * `include_lists` determines whether to include the list IDs each contact belongs to.
|
11
|
-
def self.find(filter = Bronto::Filter.new, page_number = 1, include_recipients = false, include_content = false)
|
11
|
+
def self.find(filter = Bronto::Filter.new, page_number = 1, include_recipients = false, include_content = false, api_key = nil)
|
12
12
|
body = { filter: filter.to_hash, page_number: page_number, include_recipients: include_recipients,
|
13
13
|
include_content: include_content }
|
14
14
|
|
15
|
-
resp = request(:read) do
|
15
|
+
resp = request(:read, api_key) do
|
16
16
|
soap.body = body
|
17
17
|
end
|
18
18
|
|
data/lib/bronto/list.rb
CHANGED
@@ -5,8 +5,9 @@ module Bronto
|
|
5
5
|
# Removes all contacts from the given lists.
|
6
6
|
def self.clear_lists(*lists)
|
7
7
|
lists = lists.flatten
|
8
|
+
api_key = lists.first.is_a?(String) ? lists.shift : self.api_key
|
8
9
|
|
9
|
-
resp = request(:clear) do
|
10
|
+
resp = request(:clear, api_key) do
|
10
11
|
soap.body = {
|
11
12
|
list: lists.map { |l| { id: l.id } }
|
12
13
|
}
|
data/lib/bronto/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bronto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|