send_with_us 1.10.2 → 1.11.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -0
- data/README.md +59 -1
- data/lib/send_with_us/api.rb +85 -2
- data/lib/send_with_us/api_request.rb +5 -0
- data/lib/send_with_us/version.rb +1 -1
- data/test/lib/send_with_us/api_request_test.rb +118 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0648a9da5af356483eb9a6ca360af1e0a6c93e1
|
4
|
+
data.tar.gz: 4f4541298cc6e6bdb25381b59c723242c6909d4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37e8146dc953959ed5d1271894150be499a2fabbc8f5cf7e2b2c1bfd49a0f1e4c5d8f35d80ebe5ceaae52d4f08473538a996654f754c8325e5395b201134d677
|
7
|
+
data.tar.gz: 38ad2b4a9707127d48c3f7beba1f57dc2e1c550477fb80545111aafd2d26e64d8671e29e50e86b4464c5e15b6e0358eb07ca316333bc02f8fdf3ae7434ddb6b9
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -225,7 +225,7 @@ rescue => e
|
|
225
225
|
end
|
226
226
|
```
|
227
227
|
|
228
|
-
### Using
|
228
|
+
### Using Drip Campaigns
|
229
229
|
|
230
230
|
```ruby
|
231
231
|
require 'rubygems'
|
@@ -269,6 +269,18 @@ result = obj.customer_create("visha@example.com", customer_data)
|
|
269
269
|
result = obj.customer_delete("visha@example.com")
|
270
270
|
```
|
271
271
|
|
272
|
+
### Add customer to group
|
273
|
+
|
274
|
+
```ruby
|
275
|
+
obj.customer\_add\_to\_group(\email_address, group_id)
|
276
|
+
```
|
277
|
+
|
278
|
+
### Remove customer from group
|
279
|
+
|
280
|
+
```ruby
|
281
|
+
obj.customer\_remove\_from\_group(email\_address, group_id)
|
282
|
+
```
|
283
|
+
|
272
284
|
### Customer Conversion Event
|
273
285
|
You can use the Conversion API to track conversion and revenue data events against your sent emails
|
274
286
|
|
@@ -282,6 +294,52 @@ obj.customer_conversion('customer@example.com', 10050)
|
|
282
294
|
obj.customer_conversion('customer@example.com')
|
283
295
|
```
|
284
296
|
|
297
|
+
## Templates
|
298
|
+
|
299
|
+
```ruby
|
300
|
+
|
301
|
+
# List Templates
|
302
|
+
obj.list\_templates() # Alternatively, obj.emails()
|
303
|
+
|
304
|
+
# Create Template
|
305
|
+
obj.create\_template(name, subject, html, text)
|
306
|
+
|
307
|
+
# Delete Template
|
308
|
+
obj.delete\_template(template\_id)
|
309
|
+
|
310
|
+
# List Template Versions
|
311
|
+
obj.list\_template\_versions(template\_id)
|
312
|
+
|
313
|
+
# Update Template Version
|
314
|
+
obj.update\_template\_version(template\_id, version\_id, name, subject, html, text)
|
315
|
+
|
316
|
+
# Create Template Version
|
317
|
+
obj.create\_template\_version(template\_id, name, subject, html, text)
|
318
|
+
|
319
|
+
```
|
320
|
+
|
321
|
+
|
322
|
+
## Groups
|
323
|
+
|
324
|
+
Groups are another way to "tag" customers in sendwithus. They can be thought of as lists.
|
325
|
+
|
326
|
+
|
327
|
+
```ruby
|
328
|
+
# List groups
|
329
|
+
obj.get_groups()
|
330
|
+
|
331
|
+
# Create group
|
332
|
+
obj.create\_customer\_group(name, description)
|
333
|
+
|
334
|
+
# Update group
|
335
|
+
obj.update\_customer\_group(group_id, new\_name, new\_description)
|
336
|
+
|
337
|
+
# Delete group
|
338
|
+
|
339
|
+
obj.delete_group(group_id)
|
340
|
+
|
341
|
+
```
|
342
|
+
|
285
343
|
## Rails
|
286
344
|
|
287
345
|
For a Rails app, create `send_with_us.rb` in `/config/initializers/`
|
data/lib/send_with_us/api.rb
CHANGED
@@ -149,6 +149,8 @@ module SendWithUs
|
|
149
149
|
SendWithUs::ApiRequest.new(@configuration).get(:emails)
|
150
150
|
end
|
151
151
|
|
152
|
+
alias list_templates emails
|
153
|
+
|
152
154
|
def render(template_id, version_id = nil, template_data = {})
|
153
155
|
locale = template_data.delete(:locale)
|
154
156
|
|
@@ -255,8 +257,20 @@ module SendWithUs
|
|
255
257
|
SendWithUs::ApiRequest.new(@configuration).post(endpoint, payload)
|
256
258
|
end
|
257
259
|
|
258
|
-
def customer_delete(
|
259
|
-
endpoint = "customers/#{
|
260
|
+
def customer_delete(email_address)
|
261
|
+
endpoint = "customers/#{email_address}"
|
262
|
+
SendWithUs::ApiRequest.new(@configuration).delete(endpoint)
|
263
|
+
end
|
264
|
+
|
265
|
+
def customer_add_to_group(email_address, group_id)
|
266
|
+
payload = nil
|
267
|
+
|
268
|
+
endpoint = "customers/#{email_address})/groups/#{group_id}"
|
269
|
+
SendWithUs::ApiRequest.new(@configuration).post(endpoint, payload)
|
270
|
+
end
|
271
|
+
|
272
|
+
def customer_remove_from_group()
|
273
|
+
endpoint = "customers/#{email_address})/groups/#{group_id}"
|
260
274
|
SendWithUs::ApiRequest.new(@configuration).delete(endpoint)
|
261
275
|
end
|
262
276
|
|
@@ -285,5 +299,74 @@ module SendWithUs
|
|
285
299
|
|
286
300
|
SendWithUs::ApiRequest.new(@configuration).get(endpoint)
|
287
301
|
end
|
302
|
+
|
303
|
+
def delete_template(template_id)
|
304
|
+
endpoint = "templates/#{template_id}"
|
305
|
+
SendWithUs::ApiRequest.new(@configuration).delete(endpoint)
|
306
|
+
end
|
307
|
+
|
308
|
+
def list_template_versions(template_id)
|
309
|
+
endpoint = "templates/#{template_id}/versions"
|
310
|
+
SendWithUs::ApiRequest.new(@configuration).get(endpoint)
|
311
|
+
end
|
312
|
+
|
313
|
+
def get_template_version(template_id, version_id)
|
314
|
+
endpoint = "templates/#{template_id}/versions/#{version_id}"
|
315
|
+
SendWithUs::ApiRequest.new(@configuration).get(endpoint)
|
316
|
+
end
|
317
|
+
|
318
|
+
def update_template_version(template_id, version_id, name, subject, html, text)
|
319
|
+
payload = {
|
320
|
+
name: name,
|
321
|
+
subject: subject,
|
322
|
+
html: html,
|
323
|
+
text: text
|
324
|
+
}
|
325
|
+
|
326
|
+
endpoint = "templates/#{template_id}/versions/#{version_id}"
|
327
|
+
SendWithUs::ApiRequest.new(@configuration).put(endpoint, payload.to_json)
|
328
|
+
end
|
329
|
+
|
330
|
+
def create_template_version(template_id, name, subject, html, text)
|
331
|
+
payload = {
|
332
|
+
name: name,
|
333
|
+
subject: subject,
|
334
|
+
html: html,
|
335
|
+
text: text
|
336
|
+
}
|
337
|
+
|
338
|
+
endpoint = "templates/#{template_id}/versions"
|
339
|
+
SendWithUs::ApiRequest.new(@configuration).post(endpoint, payload.to_json)
|
340
|
+
end
|
341
|
+
|
342
|
+
def get_groups()
|
343
|
+
endpoint = "groups"
|
344
|
+
SendWithUs::ApiRequest.new(@configuration).get(endpoint)
|
345
|
+
end
|
346
|
+
|
347
|
+
def create_customer_group(name, description = '')
|
348
|
+
payload = {
|
349
|
+
name: name,
|
350
|
+
description: description
|
351
|
+
}
|
352
|
+
|
353
|
+
endpoint = "groups"
|
354
|
+
SendWithUs::ApiRequest.new(@configuration).post(endpoint, payload.to_json)
|
355
|
+
end
|
356
|
+
|
357
|
+
def update_customer_group(group_id, name = '', description = '')
|
358
|
+
payload = {
|
359
|
+
name: name,
|
360
|
+
description: description
|
361
|
+
}
|
362
|
+
|
363
|
+
endpoint = "groups/#{group_id}"
|
364
|
+
SendWithUs::ApiRequest.new(@configuration).put(endpoint, payload.to_json)
|
365
|
+
end
|
366
|
+
|
367
|
+
def delete_customer_group(group_id)
|
368
|
+
endpoint = "groups/#{group_id}"
|
369
|
+
SendWithUs::ApiRequest.new(@configuration).delete(endpoint)
|
370
|
+
end
|
288
371
|
end
|
289
372
|
end
|
data/lib/send_with_us/version.rb
CHANGED
@@ -7,8 +7,25 @@ class TestApiRequest < Minitest::Test
|
|
7
7
|
@api = SendWithUs::Api.new( api_key: 'THIS_IS_A_TEST_API_KEY', debug: false)
|
8
8
|
@config = SendWithUs::Config.new( api_version: '1_0', api_key: 'THIS_IS_A_TEST_API_KEY', debug: false )
|
9
9
|
@request = SendWithUs::ApiRequest.new(@config)
|
10
|
-
@drip_campaign = {
|
11
|
-
|
10
|
+
@drip_campaign = {
|
11
|
+
:drip_campaign_id => 'dc_Rmd7y5oUJ3tn86sPJ8ESCk',
|
12
|
+
:drip_campaign_step_id => 'dcs_yaAMiZNWCLAEGw7GLjBuGY'
|
13
|
+
}
|
14
|
+
@customer = { :email => 'steve@sendwithus.com',
|
15
|
+
:groups => ['grp_wnCdAjBWGeBGDUzNwGiTKc']
|
16
|
+
}
|
17
|
+
@template = {
|
18
|
+
:html => '<html><head></head><body>TEST</body></html>',
|
19
|
+
:subject => 'A test template',
|
20
|
+
:name => 'Test Template',
|
21
|
+
:id => 'test_fixture_1'
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_first_template_version_id(template_id)
|
26
|
+
templates = @api.list_template_versions(template_id)
|
27
|
+
version = JSON.parse(templates.body)[0]["id"]
|
28
|
+
return version
|
12
29
|
end
|
13
30
|
|
14
31
|
def test_payload
|
@@ -57,9 +74,8 @@ class TestApiRequest < Minitest::Test
|
|
57
74
|
|
58
75
|
def test_send_with_with_attachment
|
59
76
|
build_objects
|
60
|
-
email_id = 'test_fixture_1'
|
61
77
|
result = @api.send_with(
|
62
|
-
|
78
|
+
@template[:id],
|
63
79
|
{name: 'Ruby Unit Test', address: 'matt@example.com'},
|
64
80
|
{data: 'I AM DATA'},
|
65
81
|
{name: 'sendwithus', address: 'matt@example.com'},
|
@@ -183,6 +199,55 @@ class TestApiRequest < Minitest::Test
|
|
183
199
|
assert_instance_of( Net::HTTPOK, result )
|
184
200
|
end
|
185
201
|
|
202
|
+
def test_list_template_versions
|
203
|
+
build_objects
|
204
|
+
result = @api.list_template_versions(@template[:id])
|
205
|
+
|
206
|
+
assert_instance_of( Net::HTTPOK, result )
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_update_template_version
|
210
|
+
build_objects
|
211
|
+
version_id = get_first_template_version_id(@template[:id])
|
212
|
+
|
213
|
+
result = @api.update_template_version(
|
214
|
+
@template[:id],
|
215
|
+
version_id,
|
216
|
+
@template[:name],
|
217
|
+
@template[:subject],
|
218
|
+
@template[:html],
|
219
|
+
''
|
220
|
+
)
|
221
|
+
|
222
|
+
assert_instance_of( Net::HTTPOK, result )
|
223
|
+
end
|
224
|
+
|
225
|
+
def test_create_template_version
|
226
|
+
build_objects
|
227
|
+
result = @api.create_template_version(
|
228
|
+
@template[:id],
|
229
|
+
@template[:name],
|
230
|
+
@template[:subject],
|
231
|
+
@template[:html],
|
232
|
+
''
|
233
|
+
)
|
234
|
+
|
235
|
+
assert_instance_of( Net::HTTPOK, result )
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_delete_template
|
239
|
+
build_objects
|
240
|
+
template = JSON.parse @api.create_template(
|
241
|
+
"test create",
|
242
|
+
"test subject",
|
243
|
+
@template[:html],
|
244
|
+
''
|
245
|
+
).body
|
246
|
+
|
247
|
+
result = @api.delete_template(template["id"])
|
248
|
+
assert_instance_of( Net::HTTPOK, result )
|
249
|
+
end
|
250
|
+
|
186
251
|
def test_emails
|
187
252
|
build_objects
|
188
253
|
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
@@ -236,34 +301,78 @@ class TestApiRequest < Minitest::Test
|
|
236
301
|
assert_equal( true, @request.send(:request_path, :send) == '/api/v1_0/send' )
|
237
302
|
end
|
238
303
|
|
239
|
-
def test_add_user_event
|
304
|
+
def test_add_user_event
|
240
305
|
build_objects
|
241
306
|
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
242
307
|
assert_instance_of( Net::HTTPSuccess, @request.post(:'customers/test@sendwithus.com/conversions', @payload))
|
243
308
|
end
|
244
309
|
|
245
|
-
def test_conversion_event
|
310
|
+
def test_conversion_event
|
246
311
|
build_objects
|
247
312
|
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
248
313
|
assert_instance_of( Net::HTTPSuccess, @request.post(:'customers/test@sendwithus.com/conversions', @payload))
|
249
314
|
end
|
250
315
|
|
251
|
-
def test_customer_create
|
316
|
+
def test_customer_create
|
252
317
|
build_objects
|
253
318
|
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
254
319
|
assert_instance_of( Net::HTTPSuccess, @request.post(:'customers', @customer))
|
255
320
|
end
|
256
321
|
|
257
|
-
def test_customer_delete
|
322
|
+
def test_customer_delete
|
258
323
|
build_objects
|
259
324
|
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
260
325
|
assert_instance_of( Net::HTTPSuccess, @request.delete(:'customers/#{@customer[:email]}'))
|
261
326
|
end
|
262
327
|
|
263
|
-
def
|
328
|
+
def test_customer_add_to_group
|
329
|
+
build_objects
|
330
|
+
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
331
|
+
assert_instance_of( Net::HTTPSuccess, @request.post(:"customers/#{@customer[:email]})/groups/#{@customer[:email][0]}", @customer))
|
332
|
+
end
|
333
|
+
|
334
|
+
def test_customer_remove_from_group
|
335
|
+
build_objects
|
336
|
+
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
337
|
+
assert_instance_of( Net::HTTPSuccess, @request.delete(:"customers/#{@customer[:email]})/groups/#{@customer[:email][0]}"))
|
338
|
+
end
|
339
|
+
|
340
|
+
def test_logs_with_options
|
264
341
|
build_objects
|
265
342
|
Net::HTTP.any_instance.stubs(:request).returns(Net::HTTPSuccess.new(1.0, 200, "OK"))
|
266
343
|
assert_instance_of( Net::HTTPSuccess, @request.get(:'logs?count=2&offset=10'))
|
267
344
|
end
|
268
345
|
|
346
|
+
def test_get_groups
|
347
|
+
build_objects
|
348
|
+
result = @api.get_groups()
|
349
|
+
|
350
|
+
assert_instance_of( Net::HTTPOK, result )
|
351
|
+
end
|
352
|
+
|
353
|
+
def test_create_customer_group
|
354
|
+
build_objects
|
355
|
+
result = @api.create_customer_group('testing')
|
356
|
+
result_id = JSON.parse(result.body)["group"]["id"]
|
357
|
+
|
358
|
+
# clean up
|
359
|
+
@api.delete_customer_group(result_id)
|
360
|
+
|
361
|
+
assert_instance_of( Net::HTTPOK, result )
|
362
|
+
end
|
363
|
+
|
364
|
+
def test_update_customer_group
|
365
|
+
build_objects
|
366
|
+
result = @api.update_customer_group(@customer[:groups][0], 'test')
|
367
|
+
assert_instance_of( Net::HTTPOK, result )
|
368
|
+
end
|
369
|
+
|
370
|
+
def delete_customer_group
|
371
|
+
build_objects
|
372
|
+
new_group = @api.create_customer_group('deleteme')
|
373
|
+
new_group_id = JSON.parse(new_group.body)["group"]["id"]
|
374
|
+
result = @api.delete_customer_group(new_group_id)
|
375
|
+
|
376
|
+
assert_instance_of( Net::HTTPOK, result )
|
377
|
+
end
|
269
378
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: send_with_us
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Harris
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.2.2
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: SendWithUs.com Ruby Client
|