sendgrid4r 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -0
- data/.travis.yml +2 -3
- data/README.md +3 -373
- data/Rakefile +1 -1
- data/lib/auth.rb +7 -9
- data/lib/client.rb +8 -9
- data/lib/sendgrid4r/factory/version_factory.rb +20 -10
- data/lib/sendgrid4r/rest/api.rb +28 -9
- data/lib/sendgrid4r/rest/asm/global_suppressions.rb +46 -0
- data/lib/sendgrid4r/rest/asm/groups.rb +69 -0
- data/lib/sendgrid4r/rest/asm/suppressions.rb +68 -0
- data/lib/sendgrid4r/rest/categories/categories.rb +38 -0
- data/lib/sendgrid4r/rest/ips/addresses.rb +74 -0
- data/lib/sendgrid4r/rest/ips/pools.rb +63 -0
- data/lib/sendgrid4r/rest/ips/warmup.rb +55 -0
- data/lib/sendgrid4r/rest/request.rb +34 -19
- data/lib/sendgrid4r/rest/settings/enforced_tls.rb +39 -0
- data/lib/sendgrid4r/rest/stats/advanced.rb +91 -0
- data/lib/sendgrid4r/rest/stats/category.rb +47 -0
- data/lib/sendgrid4r/rest/stats/global.rb +26 -0
- data/lib/sendgrid4r/rest/stats/parse.rb +26 -0
- data/lib/sendgrid4r/rest/stats/stats.rb +89 -0
- data/lib/sendgrid4r/rest/stats/subuser.rb +47 -0
- data/lib/sendgrid4r/rest/templates/templates.rb +61 -0
- data/lib/sendgrid4r/rest/templates/versions.rb +92 -0
- data/lib/sendgrid4r/version.rb +4 -1
- data/lib/sendgrid4r.rb +5 -2
- data/sendgrid4r.gemspec +13 -12
- data/spec/{global_suppressions_spec.rb → asm/global_suppressions_spec.rb} +25 -17
- data/spec/asm/groups_spec.rb +58 -0
- data/spec/{suppressions_spec.rb → asm/suppressions_spec.rb} +24 -22
- data/spec/categories/categories_spec.rb +39 -0
- data/spec/client_spec.rb +65 -50
- data/spec/ips/addresses_spec.rb +116 -0
- data/spec/ips/pools_spec.rb +43 -0
- data/spec/ips/warmup_spec.rb +52 -0
- data/spec/{enforced_tls_spec.rb → settings/enforced_tls_spec.rb} +12 -11
- data/spec/stats/advanced_spec.rb +243 -0
- data/spec/stats/category_spec.rb +112 -0
- data/spec/stats/global_spec.rb +64 -0
- data/spec/stats/parse_spec.rb +49 -0
- data/spec/stats/subuser_spec.rb +105 -0
- data/spec/templates/templates_spec.rb +66 -0
- data/spec/templates/versions_spec.rb +89 -0
- data/spec/version_factory_spec.rb +20 -15
- metadata +94 -42
- data/lib/sendgrid4r/rest/addresses.rb +0 -62
- data/lib/sendgrid4r/rest/enforced_tls.rb +0 -46
- data/lib/sendgrid4r/rest/global_suppressions.rb +0 -35
- data/lib/sendgrid4r/rest/groups.rb +0 -68
- data/lib/sendgrid4r/rest/pools.rb +0 -53
- data/lib/sendgrid4r/rest/suppressions.rb +0 -57
- data/lib/sendgrid4r/rest/templates.rb +0 -64
- data/lib/sendgrid4r/rest/versions.rb +0 -65
- data/lib/sendgrid4r/rest/warmup.rb +0 -53
- data/spec/addresses_spec.rb +0 -80
- data/spec/groups_spec.rb +0 -54
- data/spec/pools_spec.rb +0 -62
- data/spec/templates_spec.rb +0 -38
- data/spec/versions_spec.rb +0 -75
- data/spec/warmup_spec.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb22cf3a6851051dc9aff2ccd01bb58f44f05d6b
|
4
|
+
data.tar.gz: 78395e30015b6182fdf8bdc61bf773d1a0b2c0f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e38ab32b44f3bf59f2c5feb724af2ad0b3d1c128e99f8f490a41a4fecd2d2b44e42c2dd690c65654c2e68d706b465ed6e2fc57c028fbb893f8ecffb1ed1f45e
|
7
|
+
data.tar.gz: d34d0ed4873dc08367e41c88101095b967b10c292807f39132fc994ab415e3a5551c843ba8ba5b4ee6aaeaebfb404865fee394bd3d22c5999da3bf3a06182fe1
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# メソッド名のprefixに「set_」「get_」を許可
|
2
|
+
AccessorMethodName:
|
3
|
+
Enabled: false
|
4
|
+
|
5
|
+
# メソッドの行数上限を変更
|
6
|
+
MethodLength:
|
7
|
+
CountComments: true # count full line comments?
|
8
|
+
Max: 20
|
9
|
+
|
10
|
+
# 引数上限を変更
|
11
|
+
ParameterLists:
|
12
|
+
Max: 6
|
13
|
+
CountKeywordArgs: true
|
14
|
+
|
15
|
+
# AbcSizeの上限を変更
|
16
|
+
AbcSize:
|
17
|
+
Max: 20
|
18
|
+
|
19
|
+
# %r 内で利用できるスラッシュの数の制限変更
|
20
|
+
RegexpLiteral:
|
21
|
+
MaxSlashes: 0
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -3,381 +3,11 @@
|
|
3
3
|
This gem allows you to quickly and easily access to SendGrid Web API v3 for Ruby.
|
4
4
|
See [api reference](https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html) for more detail
|
5
5
|
|
6
|
-
[![Build Status](https://travis-ci.org/awwa/
|
6
|
+
[![Build Status](https://travis-ci.org/awwa/sendgrid4r.svg?branch=master)](https://travis-ci.org/awwa/sendgrid4r)
|
7
7
|
|
8
|
-
|
8
|
+
# [Documentation](https://github.com/awwa/sendgrid4r/wiki)
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
gem 'sendgrid4r'
|
13
|
-
|
14
|
-
And then execute:
|
15
|
-
|
16
|
-
$ bundle
|
17
|
-
|
18
|
-
Or install it yourself as:
|
19
|
-
|
20
|
-
$ gem install sendgrid4r
|
21
|
-
|
22
|
-
## Usage
|
23
|
-
|
24
|
-
### Create a client instance
|
25
|
-
|
26
|
-
Create a SendGrid::Client instance for API call.
|
27
|
-
|
28
|
-
```Ruby
|
29
|
-
require "sendgrid4r"
|
30
|
-
client = Sendgrid4r::Client.new("user", "pass")
|
31
|
-
```
|
32
|
-
|
33
|
-
----
|
34
|
-
### Advanced Suppression Manager
|
35
|
-
|
36
|
-
#### Groups
|
37
|
-
|
38
|
-
##### GET
|
39
|
-
Retrieve all suppression groups associated with your account.
|
40
|
-
```Ruby
|
41
|
-
groups = client.get_groups
|
42
|
-
groups.each{|group|
|
43
|
-
puts group.id # => 100
|
44
|
-
puts group.name # => "Newsletters"
|
45
|
-
puts group.description # => "Our monthly newsletter."
|
46
|
-
puts group.last_email_sent_at # => "2014-09-04 01:34:43"
|
47
|
-
puts group.unsubscribes # => 400
|
48
|
-
}
|
49
|
-
```
|
50
|
-
|
51
|
-
##### GET
|
52
|
-
Get information on a single suppression group.
|
53
|
-
```Ruby
|
54
|
-
group = client.get_group(100)
|
55
|
-
puts group.id # => 100
|
56
|
-
puts group.name # => "Newsletters"
|
57
|
-
puts group.description # => "Our monthly newsletter."
|
58
|
-
puts group.last_email_sent_at # => "2014-09-04 01:34:43"
|
59
|
-
puts group.unsubscribes # => 400
|
60
|
-
```
|
61
|
-
|
62
|
-
##### POST
|
63
|
-
Create a new suppression group.
|
64
|
-
```Ruby
|
65
|
-
new_group = client.post_group("group_name", "group_desc")
|
66
|
-
```
|
67
|
-
|
68
|
-
##### PATCH
|
69
|
-
Update a suppression group.
|
70
|
-
```Ruby
|
71
|
-
new_group.name = "group_edit"
|
72
|
-
new_group.description = "group_desc_edit"
|
73
|
-
client.patch_group(new_group.id, new_group)
|
74
|
-
```
|
75
|
-
|
76
|
-
##### DELETE
|
77
|
-
Delete a suppression group.
|
78
|
-
```Ruby
|
79
|
-
client.delete_group(100)
|
80
|
-
```
|
81
|
-
|
82
|
-
#### Suppressions
|
83
|
-
|
84
|
-
##### POST
|
85
|
-
Add recipient emails to the suppressions list for a given group.
|
86
|
-
```Ruby
|
87
|
-
emails = client.post_suppressed_emails(group.id, ["email1@address.com", "email2@address.com", "email3@address.com"])
|
88
|
-
```
|
89
|
-
|
90
|
-
##### GET
|
91
|
-
Get suppressions associated with a recipient email.
|
92
|
-
```Ruby
|
93
|
-
suppressions = client.get_suppressions("email@address.com")
|
94
|
-
suppressions.each{|suppression|
|
95
|
-
puts suppression.id # => 1
|
96
|
-
puts suppression.name # => "Weekly Newsletter"
|
97
|
-
puts suppression.description # => "The weekly newsletter"
|
98
|
-
puts suppression.suppressed # => true/false
|
99
|
-
}
|
100
|
-
```
|
101
|
-
|
102
|
-
##### GET
|
103
|
-
Retrieve suppressed emails for a group.
|
104
|
-
```Ruby
|
105
|
-
emails = client.get_suppressed_emails(100)
|
106
|
-
emails.each{|email|
|
107
|
-
puts email
|
108
|
-
}
|
109
|
-
```
|
110
|
-
|
111
|
-
##### DELETE
|
112
|
-
Delete a recipient email from the suppressions list for a given group.
|
113
|
-
```Ruby
|
114
|
-
client.delete_suppressed_email(100, "email1@address.com")
|
115
|
-
```
|
116
|
-
|
117
|
-
#### Global Suppressions
|
118
|
-
|
119
|
-
##### POST
|
120
|
-
Add recipient emails to the global suppression group.
|
121
|
-
```Ruby
|
122
|
-
emails = client.post_global_suppressed_emails(["email1@address.com", "email2@address.com", "email3@address.com"])
|
123
|
-
```
|
124
|
-
|
125
|
-
##### GET
|
126
|
-
Check if an address is in the global suppressions group.
|
127
|
-
```Ruby
|
128
|
-
email1 = client.get_global_suppressed_email("email1@address.com")
|
129
|
-
```
|
130
|
-
|
131
|
-
##### DELETE
|
132
|
-
Delete a recipient email from the global suppressions group.
|
133
|
-
```Ruby
|
134
|
-
client.delete_global_suppressed_email("email1@address.com")
|
135
|
-
```
|
136
|
-
|
137
|
-
----
|
138
|
-
### IP Management
|
139
|
-
|
140
|
-
#### IP Addresses
|
141
|
-
|
142
|
-
##### GET
|
143
|
-
See a list of all IPs and the IPs, including warm up status and pools.
|
144
|
-
```Ruby
|
145
|
-
ips = client.get_ips
|
146
|
-
ips.each{|ip|
|
147
|
-
puts ip.ip # => "xxx.xxx.xxx.xxx"
|
148
|
-
puts ip.pools # => ["new_test5"]
|
149
|
-
puts ip.warmup # => true/false
|
150
|
-
puts ip.start_date # => 1409616000
|
151
|
-
}
|
152
|
-
```
|
153
|
-
|
154
|
-
##### GET
|
155
|
-
See which pools an IP address belongs to.
|
156
|
-
```Ruby
|
157
|
-
ip = client.get_ip("xxx.xxx.xxx.xxx")
|
158
|
-
puts ip.ip # => "xxx.xxx.xxx.xxx"
|
159
|
-
puts ip.pools # => ["new_test5"]
|
160
|
-
puts ip.warmup # => true/false
|
161
|
-
```
|
162
|
-
|
163
|
-
##### POST
|
164
|
-
Add an IP to a pool.
|
165
|
-
```Ruby
|
166
|
-
ip = client.post_ip_to_pool("pool_name", "xxx.xxx.xxx.xxx")
|
167
|
-
puts ip.ip # => "xxx.xxx.xxx.xxx"
|
168
|
-
puts ip.pool_name # => "new_test5"
|
169
|
-
```
|
170
|
-
|
171
|
-
##### DELETE
|
172
|
-
Remove an IP address from a pool.
|
173
|
-
```Ruby
|
174
|
-
client.delete_ip_from_pool("pool_name", "xxx.xxx.xxx.xxx")
|
175
|
-
```
|
176
|
-
|
177
|
-
#### IP Pools
|
178
|
-
|
179
|
-
##### GET
|
180
|
-
List all IP pools.
|
181
|
-
```Ruby
|
182
|
-
pools = client.get_pools
|
183
|
-
puts pools.inspect # => ["marketing","transactional"]
|
184
|
-
```
|
185
|
-
|
186
|
-
##### POST
|
187
|
-
Create an IP pool.
|
188
|
-
```Ruby
|
189
|
-
pool = client.post_pool("name")
|
190
|
-
puts pool.name # => "name"
|
191
|
-
```
|
192
|
-
|
193
|
-
##### GET
|
194
|
-
List the IPs in a specified pool.
|
195
|
-
```Ruby
|
196
|
-
pool = client.get_pool("name")
|
197
|
-
puts pool.name # => "name"
|
198
|
-
puts pool.ips.inspect # => ["167.89.21.3"]
|
199
|
-
```
|
200
|
-
|
201
|
-
##### PUT
|
202
|
-
Update an IP pool’s name
|
203
|
-
```Ruby
|
204
|
-
client.put_pool("name", "new_name")
|
205
|
-
puts pool.name # => "name"
|
206
|
-
puts pool.ips.inspect # => ["167.89.21.3"]
|
207
|
-
```
|
208
|
-
|
209
|
-
##### DELETE
|
210
|
-
Delete an IP pool.
|
211
|
-
```Ruby
|
212
|
-
client.delete_pool("name")
|
213
|
-
```
|
214
|
-
|
215
|
-
#### IP Warmup
|
216
|
-
|
217
|
-
##### GET
|
218
|
-
Get all IPs that are currently warming up.
|
219
|
-
```Ruby
|
220
|
-
warmup_ips = client.get_warmup_ips
|
221
|
-
warmup_ips.each{|warmup_ip|
|
222
|
-
puts warmup_ip.ip # => "xxx.xxx.xxx.xxx"
|
223
|
-
puts warmup_ip.start_date # => 1409616000
|
224
|
-
}
|
225
|
-
```
|
226
|
-
|
227
|
-
##### GET
|
228
|
-
Get warmup status for a particular IP.
|
229
|
-
```Ruby
|
230
|
-
warmup_ip = client.get_warmup_ip("xxx.xxx.xxx.xxx")
|
231
|
-
puts warmup_ip.ip # => "xxx.xxx.xxx.xxx"
|
232
|
-
puts warmup_ip.start_date # => 1409616000
|
233
|
-
```
|
234
|
-
|
235
|
-
##### POST
|
236
|
-
Add an IP to warmup.
|
237
|
-
```Ruby
|
238
|
-
client.post_warmup_ip("xxx.xxx.xxx.xxx")
|
239
|
-
```
|
240
|
-
|
241
|
-
##### DELETE
|
242
|
-
Remove an IP from warmup.
|
243
|
-
```Ruby
|
244
|
-
client.delete_warmup_ip("xxx.xxx.xxx.xxx")
|
245
|
-
```
|
246
|
-
|
247
|
-
----
|
248
|
-
### Settings
|
249
|
-
|
250
|
-
#### Enforced TLS
|
251
|
-
|
252
|
-
##### GET
|
253
|
-
Get the current Enforced TLS settings.
|
254
|
-
```Ruby
|
255
|
-
enforced_tls = client.get_enforced_tls
|
256
|
-
puts enforced_tls.require_tls # => true/false
|
257
|
-
puts enforced_tls.require_valid_cert # => true/false
|
258
|
-
```
|
259
|
-
|
260
|
-
##### PATCH
|
261
|
-
Change the Enforced TLS settings.
|
262
|
-
```Ruby
|
263
|
-
enforced_tls = client.get_enforced_tls
|
264
|
-
enforced_tls.require_tls = true
|
265
|
-
enforced_tls.require_valid_cert = true
|
266
|
-
client.patch_enforced_tls(enforced_tls)
|
267
|
-
```
|
268
|
-
|
269
|
-
----
|
270
|
-
### Template Engine
|
271
|
-
|
272
|
-
#### Templates
|
273
|
-
|
274
|
-
##### GET
|
275
|
-
Retrieve all templates.
|
276
|
-
```Ruby
|
277
|
-
templates = client.get_templates
|
278
|
-
templates.each {|template|
|
279
|
-
puts template.id
|
280
|
-
puts template.name
|
281
|
-
template.versions.each {|ver|
|
282
|
-
puts ver.id
|
283
|
-
puts ver.template_id
|
284
|
-
puts ver.active
|
285
|
-
puts ver.name
|
286
|
-
puts ver.updated_at
|
287
|
-
}
|
288
|
-
}
|
289
|
-
```
|
290
|
-
|
291
|
-
##### GET
|
292
|
-
Retrieve a single template
|
293
|
-
```Ruby
|
294
|
-
template = client.get_template(template_id)
|
295
|
-
puts template.id
|
296
|
-
puts template.name
|
297
|
-
template.versions.each {|ver|
|
298
|
-
puts ver.id
|
299
|
-
puts ver.template_id
|
300
|
-
puts ver.active
|
301
|
-
puts ver.name
|
302
|
-
puts ver.updated_at
|
303
|
-
}
|
304
|
-
```
|
305
|
-
|
306
|
-
##### POST
|
307
|
-
Create a template
|
308
|
-
```Ruby
|
309
|
-
client.post_template("new_template_name")
|
310
|
-
```
|
311
|
-
|
312
|
-
##### PATCH
|
313
|
-
Edit a template.
|
314
|
-
```Ruby
|
315
|
-
client.patch_template(template_id, "edit_template_name")
|
316
|
-
```
|
317
|
-
|
318
|
-
##### DELETE
|
319
|
-
Delete a template.
|
320
|
-
```Ruby
|
321
|
-
client.delete_template(template_id)
|
322
|
-
```
|
323
|
-
|
324
|
-
#### Versions
|
325
|
-
|
326
|
-
##### GET
|
327
|
-
Retrieve a specific version of template.
|
328
|
-
```Ruby
|
329
|
-
ver = client.get_version(template_id, version_id)
|
330
|
-
puts ver.id
|
331
|
-
puts ver.template_id
|
332
|
-
puts ver.active
|
333
|
-
puts ver.name
|
334
|
-
puts ver.html_content
|
335
|
-
puts ver.plain_content
|
336
|
-
puts ver.subject
|
337
|
-
puts ver.update_at
|
338
|
-
```
|
339
|
-
|
340
|
-
##### POST
|
341
|
-
Create a new version
|
342
|
-
```Ruby
|
343
|
-
factory = SendGrid4r::VersionFactory.new
|
344
|
-
ver1 = factory.create("version1_name")
|
345
|
-
ver1 = client.post_version(template_id, ver1)
|
346
|
-
puts ver1.name # => "version1_name"
|
347
|
-
puts ver1.subject # => "<%subject%>"
|
348
|
-
puts ver1.html_content # => "<%body%>"
|
349
|
-
puts ver1.plain_content # => "<%body%>"
|
350
|
-
puts ver1.active # => 1
|
351
|
-
|
352
|
-
ver2 = factory.create("version2_name", "<%subject%> ver2", "<%body%> ver2", "<%body%> ver2", 1)
|
353
|
-
ver2 = client.post_version(template_id, ver2)
|
354
|
-
```
|
355
|
-
|
356
|
-
##### POST
|
357
|
-
Activate a version.
|
358
|
-
```Ruby
|
359
|
-
client.activate_version(template_id, version_id)
|
360
|
-
```
|
361
|
-
|
362
|
-
##### PATCH
|
363
|
-
Edit a version.
|
364
|
-
```Ruby
|
365
|
-
edit_ver = client.get_version(template_id, version_id)
|
366
|
-
edit_ver.name = "edit_version"
|
367
|
-
edit_ver.subject = "edit<%subject%>edit"
|
368
|
-
edit_ver.html_content = "edit<%body%>edit"
|
369
|
-
edit_ver.plain_content = "edit<%body%>edit"
|
370
|
-
edit_ver.active = 0
|
371
|
-
client.patch_version(template_id, version_id, edit_ver)
|
372
|
-
```
|
373
|
-
|
374
|
-
##### DELETE
|
375
|
-
Delete a version.
|
376
|
-
```Ruby
|
377
|
-
client.delete_version(template_id, version_id)
|
378
|
-
```
|
379
|
-
|
380
|
-
## Contributing
|
10
|
+
# Contributing
|
381
11
|
|
382
12
|
1. Fork it ( https://github.com/[my-github-username]/sendgrid4r/fork )
|
383
13
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
data/Rakefile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
data/lib/auth.rb
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
1
4
|
module SendGrid4r
|
5
|
+
#
|
6
|
+
# SendGrid Web API v3 data container for authentication
|
7
|
+
#
|
2
8
|
class Auth
|
9
|
+
attr_reader :username, :password
|
3
10
|
|
4
11
|
def initialize(username, password)
|
5
12
|
@username = username
|
6
13
|
@password = password
|
7
14
|
end
|
8
|
-
|
9
|
-
def get_username
|
10
|
-
@username
|
11
|
-
end
|
12
|
-
|
13
|
-
def get_password
|
14
|
-
@password
|
15
|
-
end
|
16
|
-
|
17
15
|
end
|
18
16
|
end
|
data/lib/client.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require 'auth'
|
5
|
+
require 'sendgrid4r/rest/api'
|
6
|
+
require 'sendgrid4r/factory/version_factory'
|
7
7
|
|
8
8
|
module SendGrid4r
|
9
|
-
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Client implementation
|
11
|
+
#
|
10
12
|
class Client
|
11
|
-
|
12
13
|
include SendGrid4r::REST::API
|
13
14
|
|
14
|
-
BASE_URL =
|
15
|
+
BASE_URL = 'https://api.sendgrid.com/v3'
|
15
16
|
|
16
17
|
def initialize(username, password)
|
17
18
|
@auth = Auth.new(username, password)
|
18
19
|
end
|
19
|
-
|
20
20
|
end
|
21
|
-
|
22
21
|
end
|
@@ -1,15 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
1
4
|
module SendGrid4r
|
5
|
+
#
|
6
|
+
# SendGrid Web API v3 Factory Class implementation
|
7
|
+
#
|
2
8
|
class VersionFactory
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
def create(
|
10
|
+
name:, subject: '<%subject%>',
|
11
|
+
html_content: '<%body%>', plain_content: '<%body%>', active: 1)
|
12
|
+
SendGrid4r::REST::Templates::Version.new(
|
13
|
+
nil,
|
14
|
+
nil,
|
15
|
+
nil,
|
16
|
+
active,
|
17
|
+
name,
|
18
|
+
html_content,
|
19
|
+
plain_content,
|
20
|
+
subject,
|
21
|
+
nil
|
22
|
+
)
|
12
23
|
end
|
13
|
-
|
14
24
|
end
|
15
25
|
end
|
data/lib/sendgrid4r/rest/api.rb
CHANGED
@@ -1,15 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/templates/templates'
|
5
|
+
require 'sendgrid4r/rest/templates/versions'
|
6
|
+
require 'sendgrid4r/rest/asm/groups'
|
7
|
+
require 'sendgrid4r/rest/asm/suppressions'
|
8
|
+
require 'sendgrid4r/rest/asm/global_suppressions'
|
9
|
+
require 'sendgrid4r/rest/settings/enforced_tls'
|
10
|
+
require 'sendgrid4r/rest/ips/addresses'
|
11
|
+
require 'sendgrid4r/rest/ips/pools'
|
12
|
+
require 'sendgrid4r/rest/ips/warmup'
|
13
|
+
require 'sendgrid4r/rest/categories/categories'
|
14
|
+
require 'sendgrid4r/rest/stats/stats'
|
15
|
+
require 'sendgrid4r/rest/stats/global'
|
16
|
+
require 'sendgrid4r/rest/stats/category'
|
17
|
+
require 'sendgrid4r/rest/stats/subuser'
|
18
|
+
require 'sendgrid4r/rest/stats/advanced'
|
19
|
+
require 'sendgrid4r/rest/stats/parse'
|
10
20
|
|
11
21
|
module SendGrid4r
|
12
22
|
module REST
|
23
|
+
#
|
24
|
+
# SendGrid Web API v3
|
25
|
+
#
|
13
26
|
module API
|
14
27
|
include SendGrid4r::REST::Templates
|
15
28
|
include SendGrid4r::REST::Templates::Versions
|
@@ -20,6 +33,12 @@ module SendGrid4r
|
|
20
33
|
include SendGrid4r::REST::Ips::Addresses
|
21
34
|
include SendGrid4r::REST::Ips::Warmup
|
22
35
|
include SendGrid4r::REST::Ips::Pools
|
36
|
+
include SendGrid4r::REST::Categories::Categories
|
37
|
+
include SendGrid4r::REST::Stats::Global
|
38
|
+
include SendGrid4r::REST::Stats::Category
|
39
|
+
include SendGrid4r::REST::Stats::Subuser
|
40
|
+
include SendGrid4r::REST::Stats::Advanced
|
41
|
+
include SendGrid4r::REST::Stats::Parse
|
23
42
|
end
|
24
43
|
end
|
25
44
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Asm
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Advanced Suppression Manager - Global Suppressions
|
11
|
+
#
|
12
|
+
module GlobalSuppressions
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
def self.url(email_address = nil)
|
16
|
+
url = "#{SendGrid4r::Client::BASE_URL}/asm/suppressions/global"
|
17
|
+
url = "#{url}/#{email_address}" unless email_address.nil?
|
18
|
+
url
|
19
|
+
end
|
20
|
+
|
21
|
+
def post_global_suppressed_emails(recipient_emails)
|
22
|
+
params = { recipient_emails: recipient_emails }
|
23
|
+
resp = post(
|
24
|
+
@auth,
|
25
|
+
SendGrid4r::REST::Asm::GlobalSuppressions.url,
|
26
|
+
params
|
27
|
+
)
|
28
|
+
resp['recipient_emails']
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_global_suppressed_email(email_address)
|
32
|
+
resp = get(
|
33
|
+
@auth,
|
34
|
+
SendGrid4r::REST::Asm::GlobalSuppressions.url(email_address)
|
35
|
+
)
|
36
|
+
resp['recipient_email']
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_global_suppressed_email(email_address)
|
40
|
+
delete(
|
41
|
+
@auth, SendGrid4r::REST::Asm::GlobalSuppressions.url(email_address))
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Asm
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Advanced Suppression Manager - Groups
|
11
|
+
#
|
12
|
+
module Groups
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Group = Struct.new(
|
16
|
+
:id, :name, :description, :last_email_sent_at, :unsubscribes)
|
17
|
+
|
18
|
+
def self.create_group(resp)
|
19
|
+
Group.new(
|
20
|
+
resp['id'],
|
21
|
+
resp['name'],
|
22
|
+
resp['description'],
|
23
|
+
resp['last_email_sent_at'],
|
24
|
+
resp['unsubscribes']
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def post_group(name, description)
|
29
|
+
params = { name: name, description: description }
|
30
|
+
resp = post(
|
31
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups", params
|
32
|
+
)
|
33
|
+
SendGrid4r::REST::Asm::Groups.create_group(resp)
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_groups
|
37
|
+
resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups")
|
38
|
+
groups = []
|
39
|
+
resp_a.each do |resp|
|
40
|
+
groups.push(SendGrid4r::REST::Asm::Groups.create_group(resp))
|
41
|
+
end
|
42
|
+
groups
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_group(group_id)
|
46
|
+
resp = get(
|
47
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups/#{group_id}"
|
48
|
+
)
|
49
|
+
SendGrid4r::REST::Asm::Groups.create_group(resp)
|
50
|
+
end
|
51
|
+
|
52
|
+
def patch_group(group_id, group)
|
53
|
+
resp = patch(
|
54
|
+
@auth,
|
55
|
+
"#{SendGrid4r::Client::BASE_URL}/asm/groups/#{group_id}",
|
56
|
+
group.to_h
|
57
|
+
)
|
58
|
+
SendGrid4r::REST::Asm::Groups.create_group(resp)
|
59
|
+
end
|
60
|
+
|
61
|
+
def delete_group(group_id)
|
62
|
+
delete(
|
63
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups/#{group_id}"
|
64
|
+
)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|