mailgun-ruby 1.2.5 → 1.2.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +0 -0
  3. data/.rubocop_todo.yml +0 -0
  4. data/.ruby-env.yml.example +0 -0
  5. data/README.md +4 -2
  6. data/docs/Domains.md +3 -0
  7. data/docs/OptInHandler.md +1 -1
  8. data/docs/Snippets.md +54 -61
  9. data/docs/railgun/Templates.md +92 -0
  10. data/lib/mailgun/address.rb +3 -28
  11. data/lib/mailgun/chains.rb +0 -0
  12. data/lib/mailgun/client.rb +20 -6
  13. data/lib/mailgun/domains/domains.rb +19 -1
  14. data/lib/mailgun/exceptions/exceptions.rb +27 -2
  15. data/lib/mailgun/messages/message_builder.rb +2 -2
  16. data/lib/mailgun/response.rb +0 -0
  17. data/lib/mailgun/suppressions.rb +11 -7
  18. data/lib/mailgun/version.rb +1 -1
  19. data/lib/mailgun/webhooks/webhooks.rb +2 -2
  20. data/lib/mailgun-ruby.rb +1 -1
  21. data/lib/mailgun.rb +3 -1
  22. data/lib/railgun/mailer.rb +4 -1
  23. data/spec/integration/bounces_spec.rb +3 -3
  24. data/spec/integration/campaign_spec.rb +0 -0
  25. data/spec/integration/complaints_spec.rb +0 -0
  26. data/spec/integration/domains_spec.rb +8 -0
  27. data/spec/integration/email_validation_spec.rb +1 -8
  28. data/spec/integration/events_spec.rb +0 -0
  29. data/spec/integration/list_members_spec.rb +0 -0
  30. data/spec/integration/list_spec.rb +0 -0
  31. data/spec/integration/mailgun_spec.rb +72 -0
  32. data/spec/integration/routes_spec.rb +0 -0
  33. data/spec/integration/stats_spec.rb +0 -0
  34. data/spec/integration/suppressions_spec.rb +0 -0
  35. data/spec/integration/unsubscribes_spec.rb +0 -0
  36. data/spec/integration/webhook_spec.rb +0 -0
  37. data/spec/unit/connection/test_client.rb +4 -3
  38. data/spec/unit/mailgun_spec.rb +19 -0
  39. data/vcr_cassettes/bounces.yml +12 -12
  40. data/vcr_cassettes/complaints.yml +0 -0
  41. data/vcr_cassettes/domains.todo.yml +0 -0
  42. data/vcr_cassettes/domains.yml +51 -1
  43. data/vcr_cassettes/events.yml +0 -0
  44. data/vcr_cassettes/exceptions-invalid-api-key.yml +52 -0
  45. data/vcr_cassettes/exceptions-invalid-data.yml +52 -0
  46. data/vcr_cassettes/exceptions-not-allowed.yml +54 -0
  47. data/vcr_cassettes/list_members.yml +0 -0
  48. data/vcr_cassettes/mailing_list.todo.yml +0 -0
  49. data/vcr_cassettes/mailing_list.yml +0 -0
  50. data/vcr_cassettes/routes.yml +0 -0
  51. data/vcr_cassettes/send_message.yml +0 -0
  52. data/vcr_cassettes/stats.yml +0 -0
  53. data/vcr_cassettes/unsubscribes.yml +0 -0
  54. data/vcr_cassettes/webhooks.yml +0 -0
  55. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eeb68d33e0686c3074e829fa7c33c1a9300c31bd9db3b7fde74abfdbdd681a31
4
- data.tar.gz: dc0cd7912abb804476731ba487186a362595f7806d88f50bbbe2296da8eb0b5b
3
+ metadata.gz: 17aa99cf0b68c595bdc9a923368c206da53c5eb2798d4a4faf9def78d9216129
4
+ data.tar.gz: ede5046e9ddb743b5eadff56da85a7b32049c6c6451895442f4356675c946cc9
5
5
  SHA512:
6
- metadata.gz: 9469121fbdd8341af7cc6ee395d35d8f487f556b67d8b6a0d2b6cd874f4bb1828384f9aff7c6751377fa56182b7c890947e40444f09d583d97aca8f90c41c642
7
- data.tar.gz: 2f2b70e53e187c28ea3fcf3d3abc3f208886baca01732af0bb233c154bd171565790279620fe392259f3fa74151276d4e281389606d35ce60047b6f9a922a7cf
6
+ metadata.gz: a9b57eb3df8f031b360871555f05681f4f585df44973844369f54f4acc0331e34977813275a36dab485d3b3c3268ce2a56d456c4b292bfd90399d226da1c66f5
7
+ data.tar.gz: 99d18ff767e314c436891d4a56aa05e7037618c7aa03f3fc28d6be69ad41e49a58744f02024f94376ab9e69f0250ae3455e54d41f9b939da80cba64550ec71ea
data/.rubocop.yml CHANGED
File without changes
data/.rubocop_todo.yml CHANGED
File without changes
File without changes
data/README.md CHANGED
@@ -19,7 +19,7 @@ gem install mailgun-ruby
19
19
  Gemfile:
20
20
 
21
21
  ```ruby
22
- gem 'mailgun-ruby', '~>1.2.5'
22
+ gem 'mailgun-ruby', '~>1.2.11'
23
23
  ```
24
24
 
25
25
  Usage
@@ -81,6 +81,7 @@ and replace `api-myapikey` and `mydomain.com` with your secret API key and domai
81
81
  api_key: 'api-myapikey',
82
82
  domain: 'mydomain.com',
83
83
  # api_host: 'api.eu.mailgun.net' # Uncomment this line for EU region domains
84
+ # timeout: 20 # Default depends on rest-client, whose default is 60s. Added in 1.2.3.
84
85
  }
85
86
  ```
86
87
 
@@ -96,7 +97,7 @@ class UserMailer < ApplicationMailer
96
97
  }
97
98
  end
98
99
  end
99
- end
100
+ end
100
101
  ```
101
102
 
102
103
  To get the Mailgun `message_id` after ActionMailer has successfully delivered the email:
@@ -188,6 +189,7 @@ This SDK includes the following components:
188
189
  - [Webhooks](docs/Webhooks.md)
189
190
  - [Events](docs/Events.md)
190
191
  - [Suppressions](docs/Suppressions.md)
192
+ - [Templates](docs/Templates.md)
191
193
 
192
194
  Message Builder allows you to quickly create the array of parameters, required
193
195
  to send a message, by calling a methods for each parameter.
data/docs/Domains.md CHANGED
@@ -28,6 +28,9 @@ domainer.create 'my.new.moreness', { some: 'options' }
28
28
 
29
29
  # Remove a domain
30
30
  domainer.remove 'this.one.is.not.needed.'
31
+
32
+ # Update a domain
33
+ domainer.update 'my.new.moreness', { some: 'options' }
31
34
  ```
32
35
 
33
36
  Suppressions for a Domain
data/docs/OptInHandler.md CHANGED
@@ -100,4 +100,4 @@ Available Functions
100
100
 
101
101
  More Documentation
102
102
  ------------------
103
- See the official [Mailgun Docs](https://documentation.mailgun.com/api-sending.html) for more information.
103
+ See the official [Mailgun Docs](https://documentation.mailgun.com/en/latest/api-sending.html) for more information.
data/docs/Snippets.md CHANGED
@@ -110,7 +110,7 @@ bm_obj.set_text_body "This is the text body."
110
110
  bm_obj.add_recipient :to, "a_user@example.com"
111
111
 
112
112
  # All message IDs returned in finalize method return
113
- message_ids = @bm_obj.finalize
113
+ message_ids = bm_obj.finalize
114
114
  ```
115
115
 
116
116
  ### Domains:
@@ -118,57 +118,57 @@ ____________________________________________________
118
118
  **Get a list of all domains:**
119
119
 
120
120
  ```ruby
121
- result = @mg_client.get "domains", {:limit => 5, :skip => 0}
121
+ result = mg_client.get "domains", {:limit => 5, :skip => 0}
122
122
  ```
123
123
 
124
124
  **Get a single domain:**
125
125
 
126
126
  ```ruby
127
- result = @mg_client.get "domains/#{domain}"
127
+ result = mg_client.get "domains/#{domain}"
128
128
  ```
129
129
 
130
130
  **Add a domain:**
131
131
 
132
132
  ```ruby
133
- result = @mg_client.post "domains", {:name => 'anothersample.mailgun.org',
133
+ result = mg_client.post "domains", {:name => 'anothersample.mailgun.org',
134
134
  :smtp_password => 'super_secret',
135
135
  :spam_action => 'tag'}
136
136
  ```
137
137
  **Delete a Domain: **
138
138
 
139
139
  ```ruby
140
- result = @mg_client.delete "domains/#{domain}"
140
+ result = mg_client.delete "domains/#{domain}"
141
141
  ```
142
142
  ### Unsubscribes:
143
143
  ____________________________________________________
144
144
  **Get List of Unsubscribes: **
145
145
 
146
146
  ```ruby
147
- result = @mg_client.get "#{domain}/unsubscribes", {:limit => 50, :skip => 10}
147
+ result = mg_client.get "#{domain}/unsubscribes", {:limit => 50, :skip => 10}
148
148
  ```
149
149
 
150
150
  **Get Single Unsubscribe: **
151
151
 
152
152
  ```ruby
153
- result = @mg_client.get "#{domain}/unsubscribes/#{email_address}"
153
+ result = mg_client.get "#{domain}/unsubscribes/#{email_address}"
154
154
  ```
155
155
 
156
156
  **Unsubscribe a Recipient: **
157
157
 
158
158
  ```ruby
159
- result = @mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => 'mypromotion'}
159
+ result = mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => 'mypromotion'}
160
160
  ```
161
161
 
162
162
  **Unsubscribe from all messages for a domain: **
163
163
 
164
164
  ```ruby
165
- result = @mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => '*'}
165
+ result = mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => '*'}
166
166
  ```
167
167
 
168
168
  **Remove an unsubscribe: **
169
169
 
170
170
  ```ruby
171
- result = @mg_client.delete "#{domain}/unsubscribes/#{email_address}"
171
+ result = mg_client.delete "#{domain}/unsubscribes/#{email_address}"
172
172
  ```
173
173
 
174
174
  ### Complaints:
@@ -176,24 +176,24 @@ ____________________________________________________
176
176
  **Get List of Complaints: **
177
177
 
178
178
  ```ruby
179
- result = @mg_client.get "#{domain}/complaints", {:limit => 50, :skip => 10}
179
+ result = mg_client.get "#{domain}/complaints", {:limit => 50, :skip => 10}
180
180
  ```
181
181
 
182
182
  **Get a Single Complaint: **
183
183
 
184
184
  ```ruby
185
- result = @mg_client.get "#{domain}/complaints/#{email_address}"
185
+ result = mg_client.get "#{domain}/complaints/#{email_address}"
186
186
  ```
187
187
  **Create a complaint: **
188
188
 
189
189
  ```ruby
190
- result = @mg_client.post "#{domain}/complaint", {:address => 'bob@example.com'}
190
+ result = mg_client.post "#{domain}/complaint", {:address => 'bob@example.com'}
191
191
  ```
192
192
 
193
193
  **Remove a complaint: **
194
194
 
195
195
  ```ruby
196
- result = @mg_client.delete "#{domain}/complaint/#{email_address}"
196
+ result = mg_client.delete "#{domain}/complaint/#{email_address}"
197
197
  ```
198
198
 
199
199
  ### Bounces:
@@ -201,19 +201,19 @@ ____________________________________________________
201
201
  **Get List of Bounces: **
202
202
 
203
203
  ```ruby
204
- result = @mg_client.get "#{domain}/bounces", {:limit => 50, :skip => 10}
204
+ result = mg_client.get "#{domain}/bounces", {:limit => 50, :skip => 10}
205
205
  ```
206
206
 
207
207
  **Get a Single Bounce Event: **
208
208
 
209
209
  ```ruby
210
- result = @mg_client.get "#{domain}/bounces/#{email_address}"
210
+ result = mg_client.get "#{domain}/bounces/#{email_address}"
211
211
  ```
212
212
 
213
213
  **Create a Bounce: **
214
214
 
215
215
  ```ruby
216
- result = @mg_client.post "#{domain}/bounces", {:address => 'bob@example.com',
216
+ result = mg_client.post "#{domain}/bounces", {:address => 'bob@example.com',
217
217
  :code => 550,
218
218
  :error => 'Mailbox does not exist.'}
219
219
  ```
@@ -221,7 +221,7 @@ result = @mg_client.post "#{domain}/bounces", {:address => 'bob@example.com',
221
221
  **Remove a Bounced Address: **
222
222
 
223
223
  ```ruby
224
- result = @mg_client.delete "#{domain}/bounces/#{email_address}"
224
+ result = mg_client.delete "#{domain}/bounces/#{email_address}"
225
225
  ```
226
226
 
227
227
  ### Statistics:
@@ -229,7 +229,7 @@ ____________________________________________________
229
229
  **Get Statistics: **
230
230
 
231
231
  ```ruby
232
- result = @mg_client.get "#{domain}/stats", {:limit => 50,
232
+ result = mg_client.get "#{domain}/stats", {:limit => 50,
233
233
  :skip => 10,
234
234
  :event => 'sent',
235
235
  "start-date" => 'Mon, 13 Feb 2015 00:00:00 GMT'}
@@ -238,14 +238,14 @@ result = @mg_client.get "#{domain}/stats", {:limit => 50,
238
238
  **Remove a Tag: **
239
239
 
240
240
  ```ruby
241
- result = @mg_client.delete "#{domain}/tags/#{tag}"
241
+ result = mg_client.delete "#{domain}/tags/#{tag}"
242
242
  ```
243
243
  ### Events:
244
244
  ____________________________________________________
245
245
  **Get Event: **
246
246
 
247
247
  ```ruby
248
- result = @mg_client.get "#{domain}/events", {:event => 'rejected'}
248
+ result = mg_client.get "#{domain}/events", {:event => 'rejected'}
249
249
  ```
250
250
 
251
251
  ### Routes:
@@ -253,18 +253,18 @@ ____________________________________________________
253
253
  **Get List of Routes: **
254
254
 
255
255
  ```ruby
256
- result = @mg_client.get "routes", {:limit => 50, :skip => 10}
256
+ result = mg_client.get "routes", {:limit => 50, :skip => 10}
257
257
  ```
258
258
 
259
259
  **Get a Single Route by ID: **
260
260
 
261
261
  ```ruby
262
- result = @mg_client.get "routes/#{route_id}"
262
+ result = mg_client.get "routes/#{route_id}"
263
263
  ```
264
264
  **Create a Route: **
265
265
 
266
266
  ```ruby
267
- result = @mg_client.post "routes", {:priority => 10,
267
+ result = mg_client.post "routes", {:priority => 10,
268
268
  :description => 'This is a test route',
269
269
  :expression => 'match_recipient(".*@gmail.com")',
270
270
  :action => 'forward("alice@example.com")'}
@@ -272,7 +272,7 @@ result = @mg_client.post "routes", {:priority => 10,
272
272
  **Update a Route: **
273
273
 
274
274
  ```ruby
275
- result = @mg_client.put "routes/#{route_id}", {:priority => 10,
275
+ result = mg_client.put "routes/#{route_id}", {:priority => 10,
276
276
  :description => 'This is a test route',
277
277
  :expression => 'match_recipient(".*@gmail.com")',
278
278
  :action => 'forward("alice@example.com")'}
@@ -280,46 +280,46 @@ result = @mg_client.put "routes/#{route_id}", {:priority => 10,
280
280
  **Remove a Route: **
281
281
 
282
282
  ```ruby
283
- result = @mg_client.delete "routes/#{route_id}"
283
+ result = mg_client.delete "routes/#{route_id}"
284
284
  ```
285
285
  ### Campaigns:
286
286
  ____________________________________________________
287
287
  **Get List of Campaigns: **
288
288
 
289
289
  ```ruby
290
- result = @mg_client.get "#{domain}/campaigns", {:limit => 50, :skip => 10}
290
+ result = mg_client.get "#{domain}/campaigns", {:limit => 50, :skip => 10}
291
291
  ```
292
292
 
293
293
  **Get a Single Campaign: **
294
294
 
295
295
  ```ruby
296
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}"
296
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}"
297
297
  ```
298
298
 
299
299
  **Create a Campaign: **
300
300
 
301
301
  ```ruby
302
- result = @mg_client.post "#{domain}/campaigns", {:name => 'My Campaign',
302
+ result = mg_client.post "#{domain}/campaigns", {:name => 'My Campaign',
303
303
  :id => 'campaign_123_2014'}
304
304
  ```
305
305
 
306
306
  **Update a Campaign: **
307
307
 
308
308
  ```ruby
309
- result = @mg_client.put "#{domain}/campaigns/#{campaign_id}", {:name => 'My Campaign',
309
+ result = mg_client.put "#{domain}/campaigns/#{campaign_id}", {:name => 'My Campaign',
310
310
  :id => 'campaign_123_2014'}
311
311
  ```
312
312
 
313
313
  **Remove a Campaign: **
314
314
 
315
315
  ```ruby
316
- result = @mg_client.delete "#{domain}/campaigns/#{campaign_id}"
316
+ result = mg_client.delete "#{domain}/campaigns/#{campaign_id}"
317
317
  ```
318
318
 
319
319
  **Get Campaign Events: **
320
320
 
321
321
  ```ruby
322
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/events", {:event => 'clicked',
322
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/events", {:event => 'clicked',
323
323
  :recipient => 'test@example.com',
324
324
  :country => 'US',
325
325
  :region => 'TX',
@@ -331,13 +331,13 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/events", {:event =>
331
331
  **Get a Single Campaign's Stats: **
332
332
 
333
333
  ```ruby
334
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/stats", {:groupby => 'domain'}
334
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/stats", {:groupby => 'domain'}
335
335
  ```
336
336
 
337
337
  **Get a Single Campaign's Click Stats: **
338
338
 
339
339
  ```ruby
340
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/clicks", {:groupby => 'hour',
340
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/clicks", {:groupby => 'hour',
341
341
  :country => 'US',
342
342
  :region => 'TX',
343
343
  :city => 'Austin',
@@ -349,7 +349,7 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/clicks", {:groupby =
349
349
  **Get a Single Campaign's Click Opens: **
350
350
 
351
351
  ```ruby
352
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/opens", {:groupby => 'hour',
352
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/opens", {:groupby => 'hour',
353
353
  :country => 'US',
354
354
  :region => 'TX',
355
355
  :city => 'Austin',
@@ -361,7 +361,7 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/opens", {:groupby =>
361
361
  **Get a Single Campaign's Click Unsubscribes: **
362
362
 
363
363
  ```ruby
364
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/unsubscribes", {:groupby => 'hour',
364
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/unsubscribes", {:groupby => 'hour',
365
365
  :country => 'US',
366
366
  :region => 'TX',
367
367
  :city => 'Austin',
@@ -373,7 +373,7 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/unsubscribes", {:gro
373
373
  **Get a Single Campaign's Click Complaints: **
374
374
 
375
375
  ```ruby
376
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/complaints", {:groupby => 'hour',
376
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/complaints", {:groupby => 'hour',
377
377
  :limit => 100,
378
378
  :page => 1,
379
379
  :count => true}
@@ -385,33 +385,33 @@ ____________________________________________________
385
385
  **Get List of Webhooks: **
386
386
 
387
387
  ```ruby
388
- result = @mg_client.get "domains/#{domain}/webhooks"
388
+ result = mg_client.get "domains/#{domain}/webhooks"
389
389
  ```
390
390
 
391
391
  **Get a Webhook Properties: **
392
392
 
393
393
  ```ruby
394
- result = @mg_client.get "domains/#{domain}/webhooks/#{webhook_id}"
394
+ result = mg_client.get "domains/#{domain}/webhooks/#{webhook_id}"
395
395
  ```
396
396
 
397
397
  **Create a Webhook: **
398
398
 
399
399
  ```ruby
400
- result = @mg_client.post "domains/#{domain}/webhooks", {:id => 'bounce',
400
+ result = mg_client.post "domains/#{domain}/webhooks", {:id => 'bounce',
401
401
  :url => 'http://example.com/mailgun/events/bounce'}
402
402
  ```
403
403
 
404
404
  **Update a Webhook: **
405
405
 
406
406
  ```ruby
407
- result = @mg_client.put "domains/#{domain}/webhooks/#{webhook_id}", {:id => 'bounce',
407
+ result = mg_client.put "domains/#{domain}/webhooks/#{webhook_id}", {:id => 'bounce',
408
408
  :url => 'http://example.com/mailgun/events/bounce'}
409
409
  ```
410
410
 
411
411
  **Remove a Webhook: **
412
412
 
413
413
  ```ruby
414
- result = @mg_client.delete "domains/#{domain}/webhooks/#{webhook_id}"
414
+ result = mg_client.delete "domains/#{domain}/webhooks/#{webhook_id}"
415
415
  ```
416
416
 
417
417
  ### Mailing Lists:
@@ -420,19 +420,19 @@ ____________________________________________________
420
420
  **Get list of Lists: **
421
421
 
422
422
  ```ruby
423
- result = @mg_client.get "lists"
423
+ result = mg_client.get "lists"
424
424
  ```
425
425
 
426
426
  **Get List Properties: **
427
427
 
428
428
  ```ruby
429
- result = @mg_client.get "lists/#{list_address}"
429
+ result = mg_client.get "lists/#{list_address}"
430
430
  ```
431
431
 
432
432
  **Create a List: **
433
433
 
434
434
  ```ruby
435
- result = @mg_client.post "lists", {:address => 'dev.group@samples.mailgun.org',
435
+ result = mg_client.post "lists", {:address => 'dev.group@samples.mailgun.org',
436
436
  :name => 'Development Group List',
437
437
  :description => 'List of all developers.',
438
438
  :access_level => 'members'}
@@ -441,7 +441,7 @@ result = @mg_client.post "lists", {:address => 'dev.group@samples.mailgun.org',
441
441
  **Update a List: **
442
442
 
443
443
  ```ruby
444
- result = @mg_client.put "lists/#{list_address}", {:address => 'dev.group@samples.mailgun.org',
444
+ result = mg_client.put "lists/#{list_address}", {:address => 'dev.group@samples.mailgun.org',
445
445
  :name => 'Development Group List',
446
446
  :description => 'List of all developers.',
447
447
  :access_level => 'members'}
@@ -450,25 +450,25 @@ result = @mg_client.put "lists/#{list_address}", {:address => 'dev.group@samples
450
450
  **Remove a List: **
451
451
 
452
452
  ```ruby
453
- result = @mg_client.delete "lists/#{list_address}"
453
+ result = mg_client.delete "lists/#{list_address}"
454
454
  ```
455
455
 
456
456
  **Get List Members: **
457
457
 
458
458
  ```ruby
459
- result = @mg_client.get "lists/#{list_address}/members"
459
+ result = mg_client.get "lists/#{list_address}/members"
460
460
  ```
461
461
 
462
462
  **Get List Member Properties: **
463
463
 
464
464
  ```ruby
465
- result = @mg_client.get "lists/#{list_address}/members/#{member_address}"
465
+ result = mg_client.get "lists/#{list_address}/members/#{member_address}"
466
466
  ```
467
467
 
468
468
  **Add Member to List: **
469
469
 
470
470
  ```ruby
471
- result = @mg_client.post "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
471
+ result = mg_client.post "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
472
472
  :name => 'Jane Doe',
473
473
  :vars => '{"first": "Jane", "last": "Doe"}',
474
474
  :subscribed => true,
@@ -478,7 +478,7 @@ result = @mg_client.post "lists/#{list_address}/members/#{member_address}", {:ad
478
478
  **Update Member on List: **
479
479
 
480
480
  ```ruby
481
- result = @mg_client.put "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
481
+ result = mg_client.put "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
482
482
  :name => 'Jane Doe',
483
483
  :vars => '{"first": "Jane", "last": "Doe"}',
484
484
  :subscribed => true}
@@ -487,13 +487,13 @@ result = @mg_client.put "lists/#{list_address}/members/#{member_address}", {:add
487
487
  **Delete a Member from List: **
488
488
 
489
489
  ```ruby
490
- result = @mg_client.delete "lists/#{list_address}/members/#{member_address}"
490
+ result = mg_client.delete "lists/#{list_address}/members/#{member_address}"
491
491
  ```
492
492
 
493
493
  **Get Stats for List: **
494
494
 
495
495
  ```ruby
496
- result = @mg_client.get "lists/#{list_address}/stats"
496
+ result = mg_client.get "lists/#{list_address}/stats"
497
497
  ```
498
498
 
499
499
  ### Email Validation:
@@ -501,14 +501,7 @@ ____________________________________________________
501
501
  **Validate Single Address: **
502
502
 
503
503
  ```ruby
504
- result = @mg_client.get "address/validate", {:address => 'test@example.com'}
505
- ```
506
-
507
- **Parse Addresses: **
508
-
509
- ```ruby
510
- result = @mg_client.get "address/parse", {:addresses => 'test@example.com, "First Last <first.last@example.com>',
511
- :syntax_only => true}
504
+ result = mg_client.get "address/validate", {:address => 'test@example.com'}
512
505
  ```
513
506
 
514
507
 
@@ -0,0 +1,92 @@
1
+ Mailgun - Templates
2
+ ====================
3
+
4
+ This is the Mailgun Ruby *Templates* utilities.
5
+
6
+ The below assumes you've already installed the Mailgun Ruby SDK in to your
7
+ project. If not, go back to the master README for instructions.
8
+
9
+ Usage - Templates
10
+ -----------------------
11
+
12
+ **Build a message with a template:**
13
+
14
+ ```ruby
15
+ mb_obj = Mailgun::MessageBuilder.new
16
+
17
+ mb_obj.from("sender@example.com")
18
+ mb_obj.add_recipient("to", "recipient@example.com")
19
+ mb_obj.subject ("This is the subject!")
20
+ message.template('example.template.name')
21
+ message.template_version('example.tag')
22
+
23
+ mg_client.send_message "sending_domain.com", mb_obj
24
+ ```
25
+
26
+ **Rails Example. Build a message with a template:**
27
+
28
+ ```ruby
29
+ class UserMailer < ApplicationMailer
30
+ def welcome_email
31
+ message = mail(
32
+ from: "sender@example.com",
33
+ to: "recipient@example.com",
34
+ subject: "This is the subject!",
35
+ template: 'example.template.name'
36
+ ) do |format|
37
+ format.text { render plain: "Test!" }
38
+ end
39
+ message.tap do |message|
40
+ message.mailgun_template_variables ||= {
41
+ 'version' => 'example.tag'
42
+ }
43
+ end
44
+ end
45
+ end
46
+ ```
47
+
48
+ Template Handlebars
49
+ -------------------------
50
+
51
+ ```
52
+ {{#if english}}
53
+ <p>This text is in the English language.</p>
54
+ {{else if spanish}}
55
+ <p>Este texto está en idioma español.</p>
56
+ {{else if french}}
57
+ <p>Ce texte est en langue française.</p>
58
+ {{/if}}
59
+ ```
60
+
61
+ In order to send the spanish version, for example:
62
+
63
+ ```ruby
64
+ message.variable('spanish', 'true')
65
+ ```
66
+
67
+ Also, Rails example:
68
+
69
+ ```ruby
70
+ class UserMailer < ApplicationMailer
71
+ def welcome_email
72
+ message = mail(
73
+ from: "sender@example.com",
74
+ to: "recipient@example.com",
75
+ subject: "This is the subject!",
76
+ template: 'example.template.name'
77
+ ) do |format|
78
+ format.text { render plain: "Test!" }
79
+ end
80
+ message.tap do |message|
81
+ message.mailgun_variables ||= {
82
+ 'spanish' => 'true'
83
+ }
84
+ end
85
+ end
86
+ end
87
+ ```
88
+
89
+ More Documentation
90
+ ------------------
91
+ See the official [Mailgun Templates Docs](https://documentation.mailgun.com/en/latest/api-templates.html)
92
+ for more information
@@ -4,45 +4,20 @@ module Mailgun
4
4
 
5
5
  # Mailgun::Address is a simple interface to the Email Validation API.
6
6
  class Address
7
-
8
- # @param [String] api_key Mailgun API - public key
9
- def initialize(api_key = "")
10
- if api_key == "" then
11
- fail ParameterError.new('Public API key is required for Mailgun::Address.initialize()', nil)
12
- end
13
-
14
- @api_key = api_key
15
- @client = Mailgun::Client.new(api_key = api_key)
7
+ def initialize
8
+ @client = Mailgun::Client.new(Mailgun.api_key, Mailgun.api_host || 'api.mailgun.net', 'v4')
16
9
  end
17
10
 
18
11
  # Given an arbitrary address, validates it based on defined checks.
19
12
  #
20
13
  # @param [String] address Email address to validate (max 512 chars.)
21
14
  def validate(address, mailbox_verification = false)
22
- params = {:address => address}
15
+ params = {address: address}
23
16
  params[:mailbox_verification] = true if mailbox_verification
24
17
 
25
18
  res = @client.get "address/validate", params
26
19
  return res.to_h!
27
20
  end
28
-
29
- # Parses a delimiter separated list of email addresses into two lists:
30
- # parsed addresses and unparsable portions. The parsed addresses are a
31
- # list of addresses that are syntactically valid (and optionally have
32
- # DNS and ESP specific grammar checks) the unparsable list is a list
33
- # of characters sequences that the parser was not able to understand.
34
- # These often align with invalid email addresses, but not always.
35
- # Delimiter characters are comma (,) and semicolon (;).
36
- #
37
- # @param [Array] addresses Addresses to parse
38
- # @param [TrueClass|FalseClass] syntax_only Perform only syntax checks
39
- def parse(addresses, syntax_only = true)
40
- validate_addrs = addresses.join(";")
41
-
42
- res = @client.get "address/parse", {:addresses => validate_addrs,
43
- :syntax_only => syntax_only.to_s}
44
- return res.to_h!
45
- end
46
21
  end
47
22
 
48
23
  end
File without changes