sendgrid-ruby 1.1.6 → 6.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +5 -5
  2. data/.env_sample +1 -3
  3. data/.github/ISSUE_TEMPLATE/config.yml +10 -0
  4. data/.github/workflows/test-and-deploy.yml +120 -0
  5. data/.gitignore +3 -0
  6. data/.rubocop.yml +5 -27
  7. data/.rubocop_todo.yml +127 -0
  8. data/CHANGELOG.md +417 -1
  9. data/CODE_OF_CONDUCT.md +73 -0
  10. data/CONTRIBUTING.md +202 -0
  11. data/Dockerfile +14 -0
  12. data/FIRST_TIMERS.md +79 -0
  13. data/Gemfile +4 -4
  14. data/ISSUE_TEMPLATE.md +30 -0
  15. data/LICENSE +21 -0
  16. data/Makefile +14 -0
  17. data/PULL_REQUEST_TEMPLATE.md +31 -0
  18. data/README.md +153 -229
  19. data/Rakefile +9 -3
  20. data/TROUBLESHOOTING.md +151 -0
  21. data/UPGRADE.md +5 -0
  22. data/USAGE.md +5144 -0
  23. data/config.ru +4 -0
  24. data/examples/accesssettings/accesssettings.rb +80 -0
  25. data/examples/alerts/alerts.rb +59 -0
  26. data/examples/apikeys/apikeys.rb +81 -0
  27. data/examples/asm/asm.rb +170 -0
  28. data/examples/browsers/browsers.rb +13 -0
  29. data/examples/campaigns/campaigns.rb +150 -0
  30. data/examples/categories/categories.rb +33 -0
  31. data/examples/clients/clients.rb +24 -0
  32. data/examples/contactdb/contactdb.rb +392 -0
  33. data/examples/devices/devices.rb +13 -0
  34. data/examples/emailactivity/emailactivity.rb +52 -0
  35. data/examples/geo/geo.rb +13 -0
  36. data/examples/helpers/eventwebhook/example.rb +16 -0
  37. data/examples/helpers/mail/example.rb +158 -0
  38. data/examples/helpers/settings/example.rb +23 -0
  39. data/examples/helpers/stats/example.rb +42 -0
  40. data/examples/ips/ips.rb +164 -0
  41. data/examples/mail/mail.rb +170 -0
  42. data/examples/mailboxproviders/mailboxproviders.rb +13 -0
  43. data/examples/mailsettings/mailsettings.rb +216 -0
  44. data/examples/partnersettings/partnersettings.rb +36 -0
  45. data/examples/scopes/scopes.rb +59 -0
  46. data/examples/senderauthentication/senderauthentication.rb +307 -0
  47. data/examples/senders/senders.rb +95 -0
  48. data/examples/stats/stats.rb +13 -0
  49. data/examples/subusers/subusers.rb +166 -0
  50. data/examples/suppression/suppression.rb +198 -0
  51. data/examples/templates/templates.rb +127 -0
  52. data/examples/trackingsettings/trackingsettings.rb +107 -0
  53. data/examples/user/user.rb +290 -0
  54. data/gemfiles/Sinatra_1.gemfile +6 -0
  55. data/gemfiles/Sinatra_2.gemfile +6 -0
  56. data/lib/rack/sendgrid_webhook_verification.rb +55 -0
  57. data/lib/sendgrid/base_interface.rb +40 -0
  58. data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +50 -0
  59. data/lib/sendgrid/helpers/inbound/README.md +98 -0
  60. data/lib/sendgrid/helpers/inbound/app.rb +32 -0
  61. data/lib/sendgrid/helpers/inbound/config.yml +26 -0
  62. data/lib/sendgrid/helpers/inbound/public/index.html +10 -0
  63. data/lib/sendgrid/helpers/inbound/sample_data/default_data.txt +58 -0
  64. data/lib/sendgrid/helpers/inbound/sample_data/raw_data.txt +57 -0
  65. data/lib/sendgrid/helpers/inbound/sample_data/raw_data_with_attachments.txt +298 -0
  66. data/lib/sendgrid/helpers/inbound/send.rb +26 -0
  67. data/lib/sendgrid/helpers/ip_management/ip_management.rb +17 -0
  68. data/lib/sendgrid/helpers/mail/README.md +14 -0
  69. data/lib/sendgrid/helpers/mail/asm.rb +19 -0
  70. data/lib/sendgrid/helpers/mail/attachment.rb +55 -0
  71. data/lib/sendgrid/helpers/mail/bcc_settings.rb +19 -0
  72. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +31 -0
  73. data/lib/sendgrid/helpers/mail/category.rb +18 -0
  74. data/lib/sendgrid/helpers/mail/click_tracking.rb +19 -0
  75. data/lib/sendgrid/helpers/mail/content.rb +19 -0
  76. data/lib/sendgrid/helpers/mail/custom_arg.rb +18 -0
  77. data/lib/sendgrid/helpers/mail/email.rb +32 -0
  78. data/lib/sendgrid/helpers/mail/footer.rb +21 -0
  79. data/lib/sendgrid/helpers/mail/ganalytics.rb +28 -0
  80. data/lib/sendgrid/helpers/mail/header.rb +18 -0
  81. data/lib/sendgrid/helpers/mail/mail.rb +122 -0
  82. data/lib/sendgrid/helpers/mail/mail_settings.rb +45 -0
  83. data/lib/sendgrid/helpers/mail/open_tracking.rb +19 -0
  84. data/lib/sendgrid/helpers/mail/personalization.rb +93 -0
  85. data/lib/sendgrid/helpers/mail/section.rb +18 -0
  86. data/lib/sendgrid/helpers/mail/spam_check.rb +21 -0
  87. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +23 -0
  88. data/lib/sendgrid/helpers/mail/substitution.rb +18 -0
  89. data/lib/sendgrid/helpers/mail/tracking_settings.rb +39 -0
  90. data/lib/sendgrid/helpers/permissions/scope.rb +28 -0
  91. data/lib/sendgrid/helpers/permissions/scopes.yml +309 -0
  92. data/lib/sendgrid/helpers/settings/README.md +14 -0
  93. data/lib/sendgrid/helpers/settings/mail_settings_dto.rb +13 -0
  94. data/lib/sendgrid/helpers/settings/partner_settings_dto.rb +13 -0
  95. data/lib/sendgrid/helpers/settings/settings.rb +28 -0
  96. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +22 -0
  97. data/lib/sendgrid/helpers/settings/user_settings_dto.rb +13 -0
  98. data/lib/sendgrid/helpers/stats/email_stats.rb +46 -0
  99. data/lib/sendgrid/helpers/stats/metrics.rb +33 -0
  100. data/lib/sendgrid/helpers/stats/stats_response.rb +29 -0
  101. data/lib/sendgrid/sendgrid.rb +21 -0
  102. data/lib/sendgrid/twilio_email.rb +21 -0
  103. data/lib/sendgrid/version.rb +1 -1
  104. data/lib/sendgrid-ruby.rb +32 -7
  105. data/mail_helper_v3.md +390 -0
  106. data/sendgrid-ruby.gemspec +16 -20
  107. data/spec/fixtures/event_webhook.rb +22 -0
  108. data/spec/rack/sendgrid_webhook_verification_spec.rb +142 -0
  109. data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +105 -0
  110. data/spec/sendgrid/helpers/ip_management/ip_management_spec.rb +12 -0
  111. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +32 -0
  112. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +24 -0
  113. data/spec/sendgrid/helpers/settings/settings_spec.rb +25 -0
  114. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +27 -0
  115. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +24 -0
  116. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +111 -0
  117. data/spec/sendgrid/helpers/stats/metrics_spec.rb +45 -0
  118. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +75 -0
  119. data/spec/sendgrid/sendgrid_spec.rb +11 -0
  120. data/spec/sendgrid/twilio_email_spec.rb +11 -0
  121. data/spec/spec_helper.rb +12 -1
  122. data/static/img/github-fork.png +0 -0
  123. data/static/img/github-sign-up.png +0 -0
  124. data/test/sendgrid/helpers/mail/test_attachment.rb +33 -0
  125. data/test/sendgrid/helpers/mail/test_category.rb +25 -0
  126. data/test/sendgrid/helpers/mail/test_email.rb +41 -0
  127. data/test/sendgrid/helpers/mail/test_mail.rb +260 -0
  128. data/test/sendgrid/helpers/mail/test_personalizations.rb +214 -0
  129. data/test/sendgrid/permissions/test_scopes.rb +36 -0
  130. data/test/sendgrid/test_sendgrid-ruby.rb +2729 -0
  131. data/twilio_sendgrid_logo.png +0 -0
  132. data/use-cases/README.md +17 -0
  133. data/use-cases/domain-authentication.md +5 -0
  134. data/use-cases/email-statistics.md +52 -0
  135. data/use-cases/legacy-templates.md +98 -0
  136. data/use-cases/personalizations.md +34 -0
  137. data/use-cases/sms.md +39 -0
  138. data/use-cases/transactional-templates.md +111 -0
  139. data/use-cases/twilio-email.md +13 -0
  140. data/use-cases/twilio-setup.md +54 -0
  141. metadata +187 -112
  142. data/.rspec +0 -2
  143. data/.travis.yml +0 -20
  144. data/FETCH_HEAD +0 -0
  145. data/Guardfile +0 -10
  146. data/LICENSE.txt +0 -22
  147. data/example.rb +0 -41
  148. data/lib/sendgrid/client.rb +0 -62
  149. data/lib/sendgrid/exceptions.rb +0 -7
  150. data/lib/sendgrid/mail.rb +0 -182
  151. data/lib/sendgrid/recipient.rb +0 -29
  152. data/lib/sendgrid/response.rb +0 -14
  153. data/lib/sendgrid/template.rb +0 -26
  154. data/lib/sendgrid/template_mailer.rb +0 -59
  155. data/spec/lib/sendgrid/client_spec.rb +0 -87
  156. data/spec/lib/sendgrid/mail_spec.rb +0 -151
  157. data/spec/lib/sendgrid/recipient_spec.rb +0 -91
  158. data/spec/lib/sendgrid/template_mailer_spec.rb +0 -86
  159. data/spec/lib/sendgrid/template_spec.rb +0 -61
  160. data/spec/lib/sendgrid_spec.rb +0 -7
@@ -0,0 +1,307 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create a domain authentication. #
7
+ # POST /whitelabel/domains #
8
+
9
+ data = JSON.parse('{
10
+ "automatic_security": false,
11
+ "custom_spf": true,
12
+ "default": true,
13
+ "domain": "example.com",
14
+ "ips": [
15
+ "192.168.1.1",
16
+ "192.168.1.2"
17
+ ],
18
+ "subdomain": "news",
19
+ "username": "john@example.com"
20
+ }')
21
+ response = sg.client.whitelabel.domains.post(request_body: data)
22
+ puts response.status_code
23
+ puts response.body
24
+ puts response.headers
25
+
26
+ ##################################################
27
+ # List all domain authentications. #
28
+ # GET /whitelabel/domains #
29
+
30
+ params = JSON.parse('{"username": "test_string", "domain": "test_string", "exclude_subusers": "true", "limit": 1, "offset": 1}')
31
+ response = sg.client.whitelabel.domains.get(query_params: params)
32
+ puts response.status_code
33
+ puts response.body
34
+ puts response.headers
35
+
36
+ ##################################################
37
+ # Get the default domain authentication. #
38
+ # GET /whitelabel/domains/default #
39
+
40
+ response = sg.client.whitelabel.domains.default.get
41
+ puts response.status_code
42
+ puts response.body
43
+ puts response.headers
44
+
45
+ ##################################################
46
+ # List the domain authentication associated with the given user. #
47
+ # GET /whitelabel/domains/subuser #
48
+
49
+ response = sg.client.whitelabel.domains.subuser.get
50
+ puts response.status_code
51
+ puts response.body
52
+ puts response.headers
53
+
54
+ ##################################################
55
+ # Disassociate a domain authentication from a given user. #
56
+ # DELETE /whitelabel/domains/subuser #
57
+
58
+ response = sg.client.whitelabel.domains.subuser.delete
59
+ puts response.status_code
60
+ puts response.body
61
+ puts response.headers
62
+
63
+ ##################################################
64
+ # Update a domain authentication. #
65
+ # PATCH /whitelabel/domains/{domain_id} #
66
+
67
+ data = JSON.parse('{
68
+ "custom_spf": true,
69
+ "default": false
70
+ }')
71
+ domain_id = 'test_url_param'
72
+ response = sg.client.whitelabel.domains._(domain_id).patch(request_body: data)
73
+ puts response.status_code
74
+ puts response.body
75
+ puts response.headers
76
+
77
+ ##################################################
78
+ # Retrieve a domain authentication. #
79
+ # GET /whitelabel/domains/{domain_id} #
80
+
81
+ domain_id = 'test_url_param'
82
+ response = sg.client.whitelabel.domains._(domain_id).get
83
+ puts response.status_code
84
+ puts response.body
85
+ puts response.headers
86
+
87
+ ##################################################
88
+ # Delete a domain authentication. #
89
+ # DELETE /whitelabel/domains/{domain_id} #
90
+
91
+ domain_id = 'test_url_param'
92
+ response = sg.client.whitelabel.domains._(domain_id).delete
93
+ puts response.status_code
94
+ puts response.body
95
+ puts response.headers
96
+
97
+ ##################################################
98
+ # Associate a domain authentication with a given user. #
99
+ # POST /whitelabel/domains/{domain_id}/subuser #
100
+
101
+ data = JSON.parse('{
102
+ "username": "jane@example.com"
103
+ }')
104
+ domain_id = 'test_url_param'
105
+ response = sg.client.whitelabel.domains._(domain_id).subuser.post(request_body: data)
106
+ puts response.status_code
107
+ puts response.body
108
+ puts response.headers
109
+
110
+ ##################################################
111
+ # Add an IP to a domain authentication. #
112
+ # POST /whitelabel/domains/{id}/ips #
113
+
114
+ data = JSON.parse('{
115
+ "ip": "192.168.0.1"
116
+ }')
117
+ id = 'test_url_param'
118
+ response = sg.client.whitelabel.domains._(id).ips.post(request_body: data)
119
+ puts response.status_code
120
+ puts response.body
121
+ puts response.headers
122
+
123
+ ##################################################
124
+ # Remove an IP from a domain authentication. #
125
+ # DELETE /whitelabel/domains/{id}/ips/{ip} #
126
+
127
+ id = 'test_url_param'
128
+ ip = 'test_url_param'
129
+ response = sg.client.whitelabel.domains._(id).ips._(ip).delete
130
+ puts response.status_code
131
+ puts response.body
132
+ puts response.headers
133
+
134
+ ##################################################
135
+ # Validate a domain authentication. #
136
+ # POST /whitelabel/domains/{id}/validate #
137
+
138
+ id = 'test_url_param'
139
+ response = sg.client.whitelabel.domains._(id).validate.post
140
+ puts response.status_code
141
+ puts response.body
142
+ puts response.headers
143
+
144
+ ##################################################
145
+ # Create a reverse DNS record #
146
+ # POST /whitelabel/ips #
147
+
148
+ data = JSON.parse('{
149
+ "domain": "example.com",
150
+ "ip": "192.168.1.1",
151
+ "subdomain": "email"
152
+ }')
153
+ response = sg.client.whitelabel.ips.post(request_body: data)
154
+ puts response.status_code
155
+ puts response.body
156
+ puts response.headers
157
+
158
+ ##################################################
159
+ # Retrieve a reverse DNS record #
160
+ # GET /whitelabel/ips #
161
+
162
+ params = JSON.parse('{"ip": "test_string", "limit": 1, "offset": 1}')
163
+ response = sg.client.whitelabel.ips.get(query_params: params)
164
+ puts response.status_code
165
+ puts response.body
166
+ puts response.headers
167
+
168
+ ##################################################
169
+ # Retrieve a reverse DNS record #
170
+ # GET /whitelabel/ips/{id} #
171
+
172
+ id = 'test_url_param'
173
+ response = sg.client.whitelabel.ips._(id).get
174
+ puts response.status_code
175
+ puts response.body
176
+ puts response.headers
177
+
178
+ ##################################################
179
+ # Delete a reverse DNS record #
180
+ # DELETE /whitelabel/ips/{id} #
181
+
182
+ id = 'test_url_param'
183
+ response = sg.client.whitelabel.ips._(id).delete
184
+ puts response.status_code
185
+ puts response.body
186
+ puts response.headers
187
+
188
+ ##################################################
189
+ # Validate a reverse DNS record #
190
+ # POST /whitelabel/ips/{id}/validate #
191
+
192
+ id = 'test_url_param'
193
+ response = sg.client.whitelabel.ips._(id).validate.post
194
+ puts response.status_code
195
+ puts response.body
196
+ puts response.headers
197
+
198
+ ##################################################
199
+ # Create a Branded Link #
200
+ # POST /whitelabel/links #
201
+
202
+ data = JSON.parse('{
203
+ "default": true,
204
+ "domain": "example.com",
205
+ "subdomain": "mail"
206
+ }')
207
+ params = JSON.parse('{"limit": 1, "offset": 1}')
208
+ response = sg.client.whitelabel.links.post(request_body: data, query_params: params)
209
+ puts response.status_code
210
+ puts response.body
211
+ puts response.headers
212
+
213
+ ##################################################
214
+ # Retrieve all link brandings #
215
+ # GET /whitelabel/links #
216
+
217
+ params = JSON.parse('{"limit": 1}')
218
+ response = sg.client.whitelabel.links.get(query_params: params)
219
+ puts response.status_code
220
+ puts response.body
221
+ puts response.headers
222
+
223
+ ##################################################
224
+ # Retrieve a Default Link Branding #
225
+ # GET /whitelabel/links/default #
226
+
227
+ params = JSON.parse('{"domain": "test_string"}')
228
+ response = sg.client.whitelabel.links.default.get(query_params: params)
229
+ puts response.status_code
230
+ puts response.body
231
+ puts response.headers
232
+
233
+ ##################################################
234
+ # Retrieve Associated Link Branding #
235
+ # GET /whitelabel/links/subuser #
236
+
237
+ params = JSON.parse('{"username": "test_string"}')
238
+ response = sg.client.whitelabel.links.subuser.get(query_params: params)
239
+ puts response.status_code
240
+ puts response.body
241
+ puts response.headers
242
+
243
+ ##################################################
244
+ # Disassociate a Link Branding #
245
+ # DELETE /whitelabel/links/subuser #
246
+
247
+ params = JSON.parse('{"username": "test_string"}')
248
+ response = sg.client.whitelabel.links.subuser.delete(query_params: params)
249
+ puts response.status_code
250
+ puts response.body
251
+ puts response.headers
252
+
253
+ ##################################################
254
+ # Update a Link Branding #
255
+ # PATCH /whitelabel/links/{id} #
256
+
257
+ data = JSON.parse('{
258
+ "default": true
259
+ }')
260
+ id = 'test_url_param'
261
+ response = sg.client.whitelabel.links._(id).patch(request_body: data)
262
+ puts response.status_code
263
+ puts response.body
264
+ puts response.headers
265
+
266
+ ##################################################
267
+ # Retrieve a Link Branding #
268
+ # GET /whitelabel/links/{id} #
269
+
270
+ id = 'test_url_param'
271
+ response = sg.client.whitelabel.links._(id).get
272
+ puts response.status_code
273
+ puts response.body
274
+ puts response.headers
275
+
276
+ ##################################################
277
+ # Delete a Link Branding #
278
+ # DELETE /whitelabel/links/{id} #
279
+
280
+ id = 'test_url_param'
281
+ response = sg.client.whitelabel.links._(id).delete
282
+ puts response.status_code
283
+ puts response.body
284
+ puts response.headers
285
+
286
+ ##################################################
287
+ # Validate a Link Branding #
288
+ # POST /whitelabel/links/{id}/validate #
289
+
290
+ id = 'test_url_param'
291
+ response = sg.client.whitelabel.links._(id).validate.post
292
+ puts response.status_code
293
+ puts response.body
294
+ puts response.headers
295
+
296
+ ##################################################
297
+ # Associate a Link Branding #
298
+ # POST /whitelabel/links/{link_id}/subuser #
299
+
300
+ data = JSON.parse('{
301
+ "username": "jane@example.com"
302
+ }')
303
+ link_id = 'test_url_param'
304
+ response = sg.client.whitelabel.links._(link_id).subuser.post(request_body: data)
305
+ puts response.status_code
306
+ puts response.body
307
+ puts response.headers
@@ -0,0 +1,95 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create a Sender Identity #
7
+ # POST /senders #
8
+
9
+ data = JSON.parse('{
10
+ "address": "123 Elm St.",
11
+ "address_2": "Apt. 456",
12
+ "city": "Denver",
13
+ "country": "United States",
14
+ "from": {
15
+ "email": "from@example.com",
16
+ "name": "Example INC"
17
+ },
18
+ "nickname": "My Sender ID",
19
+ "reply_to": {
20
+ "email": "replyto@example.com",
21
+ "name": "Example INC"
22
+ },
23
+ "state": "Colorado",
24
+ "zip": "80202"
25
+ }')
26
+ response = sg.client.senders.post(request_body: data)
27
+ puts response.status_code
28
+ puts response.body
29
+ puts response.headers
30
+
31
+ ##################################################
32
+ # Get all Sender Identities #
33
+ # GET /senders #
34
+
35
+ response = sg.client.senders.get
36
+ puts response.status_code
37
+ puts response.body
38
+ puts response.headers
39
+
40
+ ##################################################
41
+ # Update a Sender Identity #
42
+ # PATCH /senders/{sender_id} #
43
+
44
+ data = JSON.parse('{
45
+ "address": "123 Elm St.",
46
+ "address_2": "Apt. 456",
47
+ "city": "Denver",
48
+ "country": "United States",
49
+ "from": {
50
+ "email": "from@example.com",
51
+ "name": "Example INC"
52
+ },
53
+ "nickname": "My Sender ID",
54
+ "reply_to": {
55
+ "email": "replyto@example.com",
56
+ "name": "Example INC"
57
+ },
58
+ "state": "Colorado",
59
+ "zip": "80202"
60
+ }')
61
+ sender_id = 'test_url_param'
62
+ response = sg.client.senders._(sender_id).patch(request_body: data)
63
+ puts response.status_code
64
+ puts response.body
65
+ puts response.headers
66
+
67
+ ##################################################
68
+ # View a Sender Identity #
69
+ # GET /senders/{sender_id} #
70
+
71
+ sender_id = 'test_url_param'
72
+ response = sg.client.senders._(sender_id).get
73
+ puts response.status_code
74
+ puts response.body
75
+ puts response.headers
76
+
77
+ ##################################################
78
+ # Delete a Sender Identity #
79
+ # DELETE /senders/{sender_id} #
80
+
81
+ sender_id = 'test_url_param'
82
+ response = sg.client.senders._(sender_id).delete
83
+ puts response.status_code
84
+ puts response.body
85
+ puts response.headers
86
+
87
+ ##################################################
88
+ # Resend Sender Identity Verification #
89
+ # POST /senders/{sender_id}/resend_verification #
90
+
91
+ sender_id = 'test_url_param'
92
+ response = sg.client.senders._(sender_id).resend_verification.post
93
+ puts response.status_code
94
+ puts response.body
95
+ puts response.headers
@@ -0,0 +1,13 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Retrieve global email statistics #
7
+ # GET /stats #
8
+
9
+ params = JSON.parse('{"aggregated_by": "day", "limit": 1, "start_date": "2016-01-01", "end_date": "2016-04-01", "offset": 1}')
10
+ response = sg.client.stats.get(query_params: params)
11
+ puts response.status_code
12
+ puts response.body
13
+ puts response.headers
@@ -0,0 +1,166 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create Subuser #
7
+ # POST /subusers #
8
+
9
+ data = JSON.parse('{
10
+ "email": "John@example.com",
11
+ "ips": [
12
+ "1.1.1.1",
13
+ "2.2.2.2"
14
+ ],
15
+ "password": "johns_password",
16
+ "username": "John@example.com"
17
+ }')
18
+ response = sg.client.subusers.post(request_body: data)
19
+ puts response.status_code
20
+ puts response.body
21
+ puts response.headers
22
+
23
+ ##################################################
24
+ # List all Subusers #
25
+ # GET /subusers #
26
+
27
+ params = JSON.parse('{"username": "test_string", "limit": 1, "offset": 1}')
28
+ response = sg.client.subusers.get(query_params: params)
29
+ puts response.status_code
30
+ puts response.body
31
+ puts response.headers
32
+
33
+ ##################################################
34
+ # Retrieve Subuser Reputations #
35
+ # GET /subusers/reputations #
36
+
37
+ params = JSON.parse('{"usernames": "test_string"}')
38
+ response = sg.client.subusers.reputations.get(query_params: params)
39
+ puts response.status_code
40
+ puts response.body
41
+ puts response.headers
42
+
43
+ ##################################################
44
+ # Retrieve email statistics for your subusers. #
45
+ # GET /subusers/stats #
46
+
47
+ params = JSON.parse('{"end_date": "2016-04-01", "aggregated_by": "day", "limit": 1, "offset": 1, "start_date": "2016-01-01", "subusers": "test_string"}')
48
+ response = sg.client.subusers.stats.get(query_params: params)
49
+ puts response.status_code
50
+ puts response.body
51
+ puts response.headers
52
+
53
+ ##################################################
54
+ # Retrieve monthly stats for all subusers #
55
+ # GET /subusers/stats/monthly #
56
+
57
+ params = JSON.parse('{"subuser": "test_string", "limit": 1, "sort_by_metric": "test_string", "offset": 1, "date": "test_string", "sort_by_direction": "asc"}')
58
+ response = sg.client.subusers.stats.monthly.get(query_params: params)
59
+ puts response.status_code
60
+ puts response.body
61
+ puts response.headers
62
+
63
+ ##################################################
64
+ # Retrieve the totals for each email statistic metric for all subusers. #
65
+ # GET /subusers/stats/sums #
66
+
67
+ params = JSON.parse('{"end_date": "2016-04-01", "aggregated_by": "day", "limit": 1, "sort_by_metric": "test_string", "offset": 1, "start_date": "2016-01-01", "sort_by_direction": "asc"}')
68
+ response = sg.client.subusers.stats.sums.get(query_params: params)
69
+ puts response.status_code
70
+ puts response.body
71
+ puts response.headers
72
+
73
+ ##################################################
74
+ # Enable/disable a subuser #
75
+ # PATCH /subusers/{subuser_name} #
76
+
77
+ data = JSON.parse('{
78
+ "disabled": false
79
+ }')
80
+ subuser_name = 'test_url_param'
81
+ response = sg.client.subusers._(subuser_name).patch(request_body: data)
82
+ puts response.status_code
83
+ puts response.body
84
+ puts response.headers
85
+
86
+ ##################################################
87
+ # Delete a subuser #
88
+ # DELETE /subusers/{subuser_name} #
89
+
90
+ subuser_name = 'test_url_param'
91
+ response = sg.client.subusers._(subuser_name).delete
92
+ puts response.status_code
93
+ puts response.body
94
+ puts response.headers
95
+
96
+ ##################################################
97
+ # Update IPs assigned to a subuser #
98
+ # PUT /subusers/{subuser_name}/ips #
99
+
100
+ data = JSON.parse('[
101
+ "127.0.0.1"
102
+ ]')
103
+ subuser_name = 'test_url_param'
104
+ response = sg.client.subusers._(subuser_name).ips.put(request_body: data)
105
+ puts response.status_code
106
+ puts response.body
107
+ puts response.headers
108
+
109
+ ##################################################
110
+ # Update Monitor Settings for a subuser #
111
+ # PUT /subusers/{subuser_name}/monitor #
112
+
113
+ data = JSON.parse('{
114
+ "email": "example@example.com",
115
+ "frequency": 500
116
+ }')
117
+ subuser_name = 'test_url_param'
118
+ response = sg.client.subusers._(subuser_name).monitor.put(request_body: data)
119
+ puts response.status_code
120
+ puts response.body
121
+ puts response.headers
122
+
123
+ ##################################################
124
+ # Create monitor settings #
125
+ # POST /subusers/{subuser_name}/monitor #
126
+
127
+ data = JSON.parse('{
128
+ "email": "example@example.com",
129
+ "frequency": 50000
130
+ }')
131
+ subuser_name = 'test_url_param'
132
+ response = sg.client.subusers._(subuser_name).monitor.post(request_body: data)
133
+ puts response.status_code
134
+ puts response.body
135
+ puts response.headers
136
+
137
+ ##################################################
138
+ # Retrieve monitor settings for a subuser #
139
+ # GET /subusers/{subuser_name}/monitor #
140
+
141
+ subuser_name = 'test_url_param'
142
+ response = sg.client.subusers._(subuser_name).monitor.get
143
+ puts response.status_code
144
+ puts response.body
145
+ puts response.headers
146
+
147
+ ##################################################
148
+ # Delete monitor settings #
149
+ # DELETE /subusers/{subuser_name}/monitor #
150
+
151
+ subuser_name = 'test_url_param'
152
+ response = sg.client.subusers._(subuser_name).monitor.delete
153
+ puts response.status_code
154
+ puts response.body
155
+ puts response.headers
156
+
157
+ ##################################################
158
+ # Retrieve the monthly email statistics for a single subuser #
159
+ # GET /subusers/{subuser_name}/stats/monthly #
160
+
161
+ params = JSON.parse('{"date": "test_string", "sort_by_direction": "asc", "limit": 1, "sort_by_metric": "test_string", "offset": 1}')
162
+ subuser_name = 'test_url_param'
163
+ response = sg.client.subusers._(subuser_name).stats.monthly.get(query_params: params)
164
+ puts response.status_code
165
+ puts response.body
166
+ puts response.headers