mailjet 0.0.5 → 1.0.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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +81 -259
  3. data/Rakefile +5 -4
  4. data/lib/mailjet.rb +7 -11
  5. data/lib/mailjet/api_error.rb +9 -5
  6. data/lib/mailjet/collection_proxy.rb +15 -0
  7. data/lib/mailjet/configuration.rb +4 -8
  8. data/lib/mailjet/connection.rb +72 -0
  9. data/lib/mailjet/gem_extensions/rest_client.rb +19 -0
  10. data/lib/mailjet/mailer.rb +37 -2
  11. data/lib/mailjet/message_delivery.rb +9 -0
  12. data/lib/mailjet/reporting.rb +10 -7
  13. data/lib/mailjet/resource.rb +199 -0
  14. data/lib/mailjet/resources/apikey.rb +12 -0
  15. data/lib/mailjet/resources/apikeyaccess.rb +12 -0
  16. data/lib/mailjet/resources/apikeytotals.rb +14 -0
  17. data/lib/mailjet/resources/apitoken.rb +12 -0
  18. data/lib/mailjet/resources/batchjob.rb +12 -0
  19. data/lib/mailjet/resources/bouncestatistics.rb +14 -0
  20. data/lib/mailjet/resources/campaign.rb +12 -0
  21. data/lib/mailjet/resources/campaignstatistics.rb +14 -0
  22. data/lib/mailjet/resources/clickstatistics.rb +14 -0
  23. data/lib/mailjet/resources/contact.rb +12 -0
  24. data/lib/mailjet/resources/contactdata.rb +12 -0
  25. data/lib/mailjet/resources/contactfilter.rb +12 -0
  26. data/lib/mailjet/resources/contacthistorydata.rb +12 -0
  27. data/lib/mailjet/resources/contactmetadata.rb +12 -0
  28. data/lib/mailjet/resources/contactslist.rb +12 -0
  29. data/lib/mailjet/resources/contactslistsignup.rb +12 -0
  30. data/lib/mailjet/resources/contactstatistics.rb +14 -0
  31. data/lib/mailjet/resources/csvimport.rb +12 -0
  32. data/lib/mailjet/resources/domainstatistics.rb +14 -0
  33. data/lib/mailjet/resources/eventcallbackurl.rb +12 -0
  34. data/lib/mailjet/resources/geostatistics.rb +14 -0
  35. data/lib/mailjet/resources/graphstatistics.rb +14 -0
  36. data/lib/mailjet/resources/listrecipient.rb +12 -0
  37. data/lib/mailjet/resources/listrecipientstatistics.rb +14 -0
  38. data/lib/mailjet/resources/liststatistics.rb +14 -0
  39. data/lib/mailjet/resources/manycontacts.rb +12 -0
  40. data/lib/mailjet/resources/message.rb +12 -0
  41. data/lib/mailjet/resources/messagehistory.rb +14 -0
  42. data/lib/mailjet/resources/messageinformation.rb +14 -0
  43. data/lib/mailjet/resources/messagesentstatistics.rb +14 -0
  44. data/lib/mailjet/resources/messagestate.rb +12 -0
  45. data/lib/mailjet/resources/messagestatistics.rb +14 -0
  46. data/lib/mailjet/resources/metadata.rb +14 -0
  47. data/lib/mailjet/resources/metasender.rb +12 -0
  48. data/lib/mailjet/resources/myprofile.rb +12 -0
  49. data/lib/mailjet/resources/newsletter.rb +12 -0
  50. data/lib/mailjet/resources/newsletterblock.rb +12 -0
  51. data/lib/mailjet/resources/newsletterproperties.rb +12 -0
  52. data/lib/mailjet/resources/newslettertemplate.rb +12 -0
  53. data/lib/mailjet/resources/newslettertemplateblock.rb +12 -0
  54. data/lib/mailjet/resources/newslettertemplatecategory.rb +12 -0
  55. data/lib/mailjet/resources/newslettertemplateproperties.rb +12 -0
  56. data/lib/mailjet/resources/openinformation.rb +14 -0
  57. data/lib/mailjet/resources/openstatistics.rb +14 -0
  58. data/lib/mailjet/resources/parseroute.rb +12 -0
  59. data/lib/mailjet/resources/preferences.rb +12 -0
  60. data/lib/mailjet/resources/sender.rb +12 -0
  61. data/lib/mailjet/resources/senderstatistics.rb +14 -0
  62. data/lib/mailjet/resources/toplinkclicked.rb +14 -0
  63. data/lib/mailjet/resources/trigger.rb +12 -0
  64. data/lib/mailjet/resources/user.rb +12 -0
  65. data/lib/mailjet/resources/useragentstatistics.rb +14 -0
  66. data/lib/mailjet/resources/widget.rb +12 -0
  67. data/lib/mailjet/resources/widgetcustomvalue.rb +12 -0
  68. data/lib/mailjet/version.rb +1 -1
  69. metadata +155 -44
  70. data/lib/mailjet/api.rb +0 -20
  71. data/lib/mailjet/api_request.rb +0 -70
  72. data/lib/mailjet/campaign.rb +0 -67
  73. data/lib/mailjet/click.rb +0 -15
  74. data/lib/mailjet/contact.rb +0 -18
  75. data/lib/mailjet/email.rb +0 -4
  76. data/lib/mailjet/list.rb +0 -58
  77. data/lib/mailjet/template_category.rb +0 -13
  78. data/lib/mailjet/template_model.rb +0 -13
  79. data/test/mailjet/api_request_test.rb +0 -72
  80. data/test/mailjet/api_test.rb +0 -13
  81. data/test/mailjet/campaign_test.rb +0 -66
  82. data/test/mailjet/configuration_test.rb +0 -16
  83. data/test/mailjet/contact_test.rb +0 -24
  84. data/test/mailjet/list_test.rb +0 -67
  85. data/test/mailjet/rack/endpoint_test.rb +0 -30
  86. data/test/mailjet/reporting_test.rb +0 -26
  87. data/test/mailjet/template_category_test.rb +0 -13
  88. data/test/mailjet/template_model_test.rb +0 -13
  89. data/test/mailjet_test.rb +0 -17
  90. data/test/minitest_helper.rb +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d0e2c12ab0cc6237b42bd1d380226a9c34129ea8
4
- data.tar.gz: 89d3e6c6d4d64cfa2a07b3e2d336ac0ce65dfae3
3
+ metadata.gz: 156203494ae9dd313d17567b8a512d76d69c702f
4
+ data.tar.gz: e6abc5b3be30813cd8ba595269ffca54d046f8ac
5
5
  SHA512:
6
- metadata.gz: 803e5a56bf4c2cb174c49af87e6c2ba6a8376613c186dfe01153c62956f027029b82773eaf5c5acbf0f0dbd29920dc61bade288820aeebde184adf53a3e35dd7
7
- data.tar.gz: 5ef130cf9c095200c80a8e6adc91934932beb0d675b343aa1bf6c7b72fdb363e248c809f9f55bb3134664f1d8b8707e820b19227cade2122c38b8d46fd73e7d4
6
+ metadata.gz: 8ef83c13a06ab4abcdc1cad0bab70c8825fca208c6f69c2cb26198607cdd623aff145edb3bb002df65aad36955c2fda3093027787cb671e373df2488c8f9ef86
7
+ data.tar.gz: 1394da23d224428d2c3def93b3e6ae4a960bbfb74377c164f3cf2bbb31c442981b0d3282dde237737c97052c5de190ca9e02eafc334da06a21bee5f0b383b442
data/README.md CHANGED
@@ -16,26 +16,34 @@
16
16
  [mailjet]: http://www.mailjet.com
17
17
  [rubinius]: http://rubini.us/
18
18
  [ree]: http://www.rubyenterpriseedition.com/
19
- [jruby]:http://jruby.org/
20
- [mailjetter]:https://github.com/holinnn/mailjetter/
19
+ [jruby]: http://jruby.org/
20
+ [mailjetter]: https://github.com/holinnn/mailjetter/
21
+ [activeresource]: https://github.com/rails/activeresource
22
+ [apidoc]: http://dev.mailjet.com/guides
23
+ [apidoc-recipient]: http://mjdemo.poxx.net/~shubham/listrecipient.html?utm_source=github&utm_medium=link&utm_content=readme&utm_campaign=mailjet-gem
24
+ [camelcase-api]: http://api.rubyonrails.org/classes/String.html#method-i-camelcase
25
+ [underscore-api]: http://api.rubyonrails.org/classes/String.html#method-i-underscore
26
+ [actionmailerdoc]: http://guides.rubyonrails.org/action_mailer_basics.html#sending-emails-with-dynamic-delivery-options
27
+ [send-api-doc]: http://dev.mailjet.com/guides/send-api-guide/
28
+ [v1-branch]: https://github.com/mailjet/mailjet-gem/tree/v1
21
29
 
22
30
  <!-- You can read this readme file in other languages:
23
31
  english | [french](./README.fr.md) -->
24
32
 
25
33
  This gem helps you to:
26
34
 
27
- * Send transactional emails through Mailjet API in Rails 3
28
- * Manage your lists, contacts and campaigns
35
+ * Send transactional emails through Mailjet API in Rails 3/4
36
+ * Manage your lists, contacts and campaigns, and much more...
29
37
  * Track email delivery through event API
30
38
 
31
39
  Compatibility:
32
40
 
33
- - Ruby 1.8.7
34
41
  - Ruby 1.9.X
35
- - [jRuby][jruby]
36
- - [Rubinius][rubinius]
42
+ - Ruby 2.0.0
37
43
 
38
- Rails ActionMailer integration designed for Rails 3.X
44
+ Rails ActionMailer integration designed for Rails 3.X and 4.X
45
+
46
+ IMPORTANT: Mailjet gem switched to API v3, the new API provided by Mailjet. For the wrapper for API v1, check the [v1 branch][v1-branch].
39
47
 
40
48
  ## Install
41
49
 
@@ -88,310 +96,124 @@ As easy as:
88
96
 
89
97
  ```ruby
90
98
  # application.rb
91
- config.action_mailer.delivery_method = :mailjet
92
-
93
- ```
94
-
95
- ## Manage your campaigns
96
-
97
- ### Contacts
98
-
99
- #### Filter your contacts
100
-
101
- ```ruby
102
- > contacts = Mailjet::Contact.all(status: 'active', start: 100, limit: 2)
103
- => [#<Mailjet::Contact>, #<Mailjet::Contact>]
104
- > contacts = Mailjet::Contact.all(openers: true, start: 100, limit: 2)
105
- => [#<Mailjet::Contact>, #<Mailjet::Contact>]
106
- ```
107
-
108
- *All parameters and attributes at https://eu.mailjet.com/docs/api/contact/list*
109
- *All parameters and attributes for the openers option at https://eu.mailjet.com/docs/api/contact/openers*
110
-
111
- #### More info about your contacts
99
+ config.action_mailer.delivery_method = :mailjet_smtp
112
100
 
113
- ```ruby
114
- > contacts[0].infos
115
- => {blocked: 12, click: 1, email: 'test@mailjet.com'}
116
101
  ```
117
102
 
118
- *All parameters and attributes at https://eu.mailjet.com/docs/api/contact/infos*
119
-
120
- ### Lists
121
-
122
- #### Create a new list
123
-
124
- ```ruby
125
- > list = Mailjet::List.create(label: 'My Mailjet list', name: "mymailjetlist")
126
- ```
127
-
128
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/create*
129
-
130
- #### List your lists
131
-
132
- ```ruby
133
- > Mailjet::List.all(limit: 10, start: 0, orderby: 'id ASC')
134
- ```
135
-
136
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/all*
137
-
138
- #### Update a list
139
-
140
- ```ruby
141
- > list = Mailjet::List.all.find{|l| l.name == 'mymailjetlist' }
142
- > list = list.update(label: 'My updated Mailjet list', name: "myupdatedmailjetlist")
143
- ```
144
-
145
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/update*
146
-
147
- #### Show all contacts within a list
148
-
149
- ```ruby
150
- > list.contacts
151
- => [#<Mailjet::Contact>, #<Mailjet::Contact>]
152
- ```
153
-
154
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/contacts*
155
-
156
- #### Add contacts to your list
157
-
158
- ```ruby
159
- > list.add_contacts("test@mailjet.com", "test2@mailjet.com", force: true )
160
- => OK
161
- ```
162
-
163
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/addmanycontacts*
164
-
165
- #### Unsubscribe contact from a list
166
-
167
- ```ruby
168
- > list.unsubscribe_contact("test@mailjet.com")
169
- => OK
170
- ```
171
-
172
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/unsubcontact*
173
-
174
- #### Remove contacts from a list
175
-
176
- ```ruby
177
- > list.remove_contacts("test@mailjet.com", "test2@mailjet.com")
178
- => OK
179
- ```
180
-
181
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/removemanycontacts*
182
-
183
- #### Direct list email
184
-
185
- ```ruby
186
- > list.email
187
- => "jk324jlO3N32203@lists.mailjet.com"
188
- ```
189
-
190
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/email*
191
-
192
-
193
- #### Get statistics
194
-
195
- ```ruby
196
- > list.statistics
197
- => {active: 20, bounce: 1, click: 14, created_at: "2012-02-02 21:59:59", ...}
198
- ```
199
-
200
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/statistics*
201
-
202
- #### Delete a list
103
+ Or if you prefer sending messages through mailjet REST API:
203
104
 
204
105
  ```ruby
205
- > list.delete
206
- => OK
207
- ```
208
-
209
- *All parameters and attributes at https://eu.mailjet.com/docs/api/lists/delete*
210
-
211
- ### Campaigns
212
-
213
- #### Create a new campaign:
214
-
215
- ```ruby
216
- > campaign = Mailjet::Campaign.create(title: "My Mailjet Campaign", list_id: Mailjet::List.all.first.id, from: "mailjet-registered-email@domain.com", from_name: "Sender Name", subject: "Our new product", lang: "en", footer: "default")
217
- ```
218
-
219
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/createcampaign*
220
-
221
- #### List your campaigns:
222
-
223
- ```ruby
224
- > campaigns = Mailjet::Campaign.all(start: 10, limit: 20)
225
- => [#<Mailjet::Campaign>, #<Mailjet::Campaign>, ...]
226
- ```
227
-
228
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/campaigns*
229
-
230
- #### Find one campaign:
231
-
232
- ```ruby
233
- > campaigns = Mailjet::Campaign.find(19)
234
- => #<Mailjet::Campaign>
235
- ```
236
-
237
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/campaigns*
238
-
239
- #### Update your campaign:
240
-
241
- ```ruby
242
- > campaign.update(title: "My *new* Mailjet Campaign")
243
- ```
244
-
245
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/updatecampaign*
246
-
247
- #### Get all the subscribers to your campaign:
248
-
249
- ```ruby
250
- > campaign.contacts(limit: 2, start: 0, status: 'queued')
251
- => [#<Mailjet::Contact id: 123, email: 'test@mailjet.com', sent_at: "2012-02-02 21:59:59", status: 'queued'>, #<Mailjet::Contact id: 456, email: 'test2@mailjet.com', sent_at: "2012-02-02 23:13:02", status: 'queued'>]
106
+ # application.rb
107
+ config.action_mailer.delivery_method = :mailjet_api
252
108
  ```
253
109
 
254
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/contacts*
110
+ You can use mailjet specific options with `delivery_method_options` as detailed in the official [ActionMailer doc][actionmailerdoc]
255
111
 
256
- #### Send the campaign the associated contacts:
112
+ ## Manage your campaigns
257
113
 
258
- ```ruby
259
- > campaign.send!
260
- => OK
261
- ```
114
+ This gem provide a convenient wrapper for consuming the mailjet API. The wrapper is highly inspired by [ActiveResource][activeresource] even though it does not depend on it.
262
115
 
263
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/sendcampaign*
116
+ You can find out all the resources you can access to in the [Official API docs][apidocs].
264
117
 
265
- #### Send a test email to specified email address:
118
+ Let's have a look at the power of this thin wrapper
266
119
 
267
- ```ruby
268
- > campaign.test('test@mailjet.com')
269
- => OK # response status
270
- ```
120
+ ### Wrapper REST API
271
121
 
272
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/testcampaign*
122
+ Let's say we want to manage list recipients.
273
123
 
274
- #### Get statistics:
124
+ #### GET all the recipients in one query:
275
125
 
276
126
  ```ruby
277
- > campaign.statistics
278
- => { total: 200, bounce: 1, bounce_pct: 0.5, click: 10, click_pct: 5, open: 20, open_pct: 10, sent: 200, sent_pct: 100, spam: 1, spam_pct: 0.5, total: 200 }
127
+ > recipients = Mailjet::Listrecipient.all(limit: 0)
128
+ => [#<Mailjet::Listrecipient>, #<Mailjet::Listrecipient>]
279
129
  ```
280
130
 
281
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/statistics*
131
+ By default, `.all` will retrieve only 10 resources, so, you have to specify `limit: 0` if you want to GET them all.
282
132
 
283
- #### Template categories:
133
+ You can refine queries using [API Filters][apidoc-recipient]`*` as well as the following parameters:
284
134
 
285
- ```ruby
286
- > Mailjet::TemplateCategory.all
287
- => [#<Mailjet::TemplateCategory id: 2, label: "basic", value: "Basic">, #<Mailjet::TemplateCategory id: 6, label: "design", value: "Design">]
288
- ```
135
+ * format: `:json, :xml, :rawxml, :html, :csv` or `:phpserialized` (default: `:json`)
136
+ * limit: int (default: 10)
137
+ * offset: int (default: 0)
138
+ * sort: `[[:property, :asc], [:property, :desc]]`
289
139
 
290
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/tplcategories*
140
+ `*` See below for [naming conventions](#naming-conventions)
291
141
 
292
- #### Template models:
142
+ #### GET the resources count
293
143
 
294
144
  ```ruby
295
- > Mailjet::TemplateModel.all(category: 2, custom: true, locale: 'fr_FR')
296
- => [<#Mailjet::TemplateModel id: 4, name: "Text", header_link: "http:\/\/" ... ]
145
+ > Mailjet::Listrecipient.count
146
+ => 83
297
147
  ```
298
148
 
299
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/tplmodels*
300
-
301
- #### Get the raw HTML form a campaign:
149
+ #### GET the first resource matching a query
302
150
 
303
151
  ```ruby
304
- > campaign.html
305
- => "<html><head></head><body>Test</body></html>"
152
+ > Mailjet::Listrecipient.first
153
+ => #<Mailjet::Listrecipient>
306
154
  ```
307
155
 
308
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/htmlcampaign*
309
-
310
- #### Set the raw HTML for a campaign:
156
+ #### GET a resource from its id
311
157
 
312
158
  ```ruby
313
- > campaign.set_html("<html><head><title>Test</title></head><body>Test <a href=\"[[UNSUB_LINK_EN]]\">[[UNSUB_LINK_EN]]</a></body></html>")
314
- => OK # response status
159
+ > recipient = Mailjet::Listrecipient.find(id)
160
+ => #<Mailjet::Listrecipient>
315
161
  ```
316
162
 
317
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/sethtmlcampaign*
318
-
319
- #### Duplicate a campaign:
163
+ #### Updating a resource
320
164
 
321
165
  ```ruby
322
- > new_campaign = campaign.duplicate(title: "Another Mailjet Campaign")
323
- => #<Mailjet::Campaign title: "Another Mailjet Campaign" ... >
166
+ > recipient = Mailjet::Listrecipient.first
167
+ => #<Mailjet::Listrecipient>
168
+ > recipient.is_active = false
169
+ => false
170
+ > recipient.attributes
171
+ => {...} # attributes hash
172
+ > recipient.save
173
+ => true
174
+ > recipient.update_attributes(is_active: true)
175
+ => true
324
176
  ```
325
177
 
326
- *All parameters and attributes at https://eu.mailjet.com/docs/api/message/duplicatecampaign*
178
+ #### Deleting a resource
179
+ ```ruby
180
+ > recipient = Mailjet::Listrecipient.first
181
+ => #<Mailjet::Listrecipient>
182
+ > recipient.delete
183
+ > Mailjet::Listrecipient.delete(123)
184
+ => #<Mailjet::Listrecipient>
185
+ ```
327
186
 
328
- ### Reporting
187
+ ### Naming conventions
329
188
 
330
- #### Get the list of all your clicks
189
+ * Classes names are the [camelcased][camelcase-api] version of resource names (e.g. class name for `listrecipient` resource will be `Listrecipient` - notice the "r" of "recipient" is downcase since the "listrecipient" resource has no dash or underscore between "list" and "recipient")
190
+ * Ruby attribute names are the [underscored][underscore-api] versions of API attributes names (e.g. `IsActive` will be `is_active` in ruby)
191
+ * If you do not like the name of the resource, you can easily rename them. For instance, if you want a capital R to ListRecipient, you can define the following class:
331
192
 
332
193
  ```ruby
333
- > clicks = Mailjet::Reporting.clicks(from: "test@domain.com")
334
- => [<#Mailjet::Click id: 4, click_delay: 1234, date: "2012-02-08", link: "", user_agent: "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"} ]
335
- > clicks.first.contact
336
- => #<Mailjet::Contact id: 123, email: "test@mailjet.com">
337
- ```
338
-
339
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/click*
340
-
341
- #### Info about domains your emails are sent to
342
-
343
- ```ruby
344
- > Mailjet::Reporting.domains(start: 3, limit: 6)
345
- => [{bounce_rate: 0.1, clicked_rate: 0.2, ...}, {bounce_rate: 0.8, clicked_rate: 0.1, ...}]
194
+ class ListRecipient
195
+ include Mailjet::Resource
196
+ self.resource_path = 'listrecipient'
197
+ self.public_operations = [:get, :put, :post, :delete] # optional
198
+ end
346
199
  ```
347
200
 
348
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/domain*
201
+ ## Send emails through API
349
202
 
350
- #### Clients used to open emails
203
+ In order to send emails through the API, you just have to `create` a new `MessageDelivery` resource.
351
204
 
352
- ```ruby
353
- > Mailjet::Reporting.clients(start: 3, limit: 6)
354
- => [{client: "Gmail", open_rate: 0.1, platform: "Windows", ...}, {client: "Outlook", open_rate: 0.3, platform: "Windows", ...}]
355
205
  ```
356
-
357
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/emailclients*
358
-
359
- #### Info about email sent
360
-
361
- ```ruby
362
- > Mailjet::Reporting.emails(from_domain: "domain.com", limit: 10)
363
- => [#<Mailjet::Email>, #<Mailjet::Email>, #<Mailjet::Email>, ...]
206
+ Mailjet::MessageDelivery.create(from: "me@example.com", to: "you@example.com", subject: "Mailjet is awesome", text: "Yes, it is!")
364
207
  ```
365
208
 
366
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/emailsent*
367
-
368
- #### Global stats about a set of emails
369
-
370
- ```ruby
371
- > Mailjet::Reporting.statistics(from_domain: "domain.com", limit: 10)
372
- => { avg_clicked_delay: 123, avg_opened_rate: 0.432, blocked: 13, ...}
209
+ If you want to send it to multiple recipients, just use an array:
373
210
  ```
374
-
375
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/emailstatistics*
376
-
377
-
378
- #### Opened email Geolocation
379
-
380
- ```ruby
381
- > Mailjet::Reporting.geolocation(from_domain: "domain.com", limit: 10)
382
- => [{click: 123, country: "France", open: 234}, {click: 9876, country: "US", open: 12345}]
211
+ Mailjet::MessageDelivery.create(from: "me@example.com", to: ["you@example.com", "someone-else@example.com"], subject: "Mailjet is awesome", text: "Yes, it is!")
383
212
  ```
384
213
 
385
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/geoip*
386
-
387
- #### User-Agents used to open emails
388
-
389
- ```ruby
390
- > Mailjet::Reporting.agents(start: 3, limit: 6)
391
- => [{cnt_clicked: 123, part: 30, platform: "Windows", user_agent: "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"}, ...]
392
- ```
214
+ In order to Mailjet modifiers, you cannot use the regular form of Ruby 2 hashes. Instead, use a String `e.g.: 'mj-prio' => 2` or a quoted symbol `e.g.: 'mj-prio' => 2`.
393
215
 
394
- *All parameters and attributes at https://eu.mailjet.com/docs/api/report/useragents*
216
+ You can check available params in the [official doc][send-api-doc].
395
217
 
396
218
  ## Track email delivery
397
219
 
data/Rakefile CHANGED
@@ -5,12 +5,13 @@ Bundler::GemHelper.install_tasks
5
5
 
6
6
  $:.push File.expand_path("../lib", __FILE__)
7
7
 
8
- Rake::TestTask.new(:test) do |t|
8
+ Rake::TestTask.new(:spec) do |t|
9
9
  t.libs << 'lib'
10
- t.libs << 'test'
11
- t.pattern = 'test/**/*_test.rb'
10
+ t.libs << 'spec'
11
+ # t.pattern = 'spec/**/*_spec.rb'
12
12
  t.verbose = true
13
+ t.test_files = Dir['spec/**/*_spec.rb']
13
14
  end
14
15
 
15
16
 
16
- task :default => :test
17
+ task :default => :spec
data/lib/mailjet.rb CHANGED
@@ -1,19 +1,15 @@
1
1
  require 'active_support'
2
2
  require 'ostruct'
3
3
  require 'mailjet/core_extensions/ostruct'
4
- require 'mailjet/api'
5
- require 'mailjet/api_request'
6
- require 'mailjet/api_error'
7
4
  require 'mailjet/configuration'
8
- require 'mailjet/contact'
9
- require 'mailjet/list'
10
- require 'mailjet/campaign'
11
- require 'mailjet/template_category'
12
- require 'mailjet/template_model'
13
- require 'mailjet/reporting'
14
- require 'mailjet/click'
15
- require 'mailjet/email'
5
+ require 'mailjet/api_error'
16
6
 
7
+ require 'mailjet/resource'
8
+ require 'mailjet/message_delivery'
9
+
10
+ Dir[File.expand_path("../mailjet/resources/*.rb", __FILE__)].each do |file|
11
+ require file
12
+ end
17
13
 
18
14
  module Mailjet
19
15
  def self.configure