sendgrid4r 1.8.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -2
- data/README.md +1 -0
- data/lib/sendgrid4r/factory/campaign_factory.rb +18 -5
- data/lib/sendgrid4r/factory/condition_factory.rb +1 -1
- data/lib/sendgrid4r/factory/mail_factory.rb +57 -0
- data/lib/sendgrid4r/factory/segment_factory.rb +2 -5
- data/lib/sendgrid4r/factory/version_factory.rb +1 -1
- data/lib/sendgrid4r/rest/api.rb +48 -49
- data/lib/sendgrid4r/rest/api_keys_management/api_keys.rb +75 -0
- data/lib/sendgrid4r/rest/api_keys_management/permissions.rb +31 -0
- data/lib/sendgrid4r/rest/blocks.rb +49 -68
- data/lib/sendgrid4r/rest/bounces.rb +45 -64
- data/lib/sendgrid4r/rest/cancel_scheduled_sends.rb +53 -72
- data/lib/sendgrid4r/rest/categories.rb +31 -0
- data/lib/sendgrid4r/rest/email_activity.rb +72 -0
- data/lib/sendgrid4r/rest/invalid_emails.rb +50 -68
- data/lib/sendgrid4r/rest/ip_access_management.rb +86 -111
- data/lib/sendgrid4r/rest/ips/addresses.rb +50 -59
- data/lib/sendgrid4r/rest/ips/pools.rb +42 -53
- data/lib/sendgrid4r/rest/ips/warmup.rb +46 -55
- data/lib/sendgrid4r/rest/mail/address.rb +14 -0
- data/lib/sendgrid4r/rest/mail/attachment.rb +22 -0
- data/lib/sendgrid4r/rest/mail/content.rb +10 -0
- data/lib/sendgrid4r/rest/mail/mail.rb +28 -0
- data/lib/sendgrid4r/rest/mail/mail_settings.rb +62 -0
- data/lib/sendgrid4r/rest/mail/params.rb +64 -0
- data/lib/sendgrid4r/rest/mail/personalization.rb +33 -0
- data/lib/sendgrid4r/rest/mail/tracking_settings.rb +74 -0
- data/lib/sendgrid4r/rest/{contacts → marketing_campaigns/contacts}/custom_fields.rb +12 -27
- data/lib/sendgrid4r/rest/{contacts → marketing_campaigns/contacts}/lists.rb +20 -34
- data/lib/sendgrid4r/rest/marketing_campaigns/contacts/recipients.rb +134 -0
- data/lib/sendgrid4r/rest/{contacts → marketing_campaigns/contacts}/reserved_fields.rb +6 -9
- data/lib/sendgrid4r/rest/marketing_campaigns/contacts/segments.rb +86 -0
- data/lib/sendgrid4r/rest/marketing_campaigns/marketing_campaigns.rb +119 -0
- data/lib/sendgrid4r/rest/marketing_campaigns/senders.rb +101 -0
- data/lib/sendgrid4r/rest/request.rb +61 -63
- data/lib/sendgrid4r/rest/settings/enforced_tls.rb +23 -26
- data/lib/sendgrid4r/rest/settings/mail.rb +167 -183
- data/lib/sendgrid4r/rest/settings/partner.rb +33 -36
- data/lib/sendgrid4r/rest/settings/settings.rb +17 -22
- data/lib/sendgrid4r/rest/settings/tracking.rb +97 -107
- data/lib/sendgrid4r/rest/sm/global_unsubscribes.rb +52 -60
- data/lib/sendgrid4r/rest/sm/groups.rb +52 -58
- data/lib/sendgrid4r/rest/sm/sm.rb +15 -17
- data/lib/sendgrid4r/rest/sm/suppressions.rb +50 -67
- data/lib/sendgrid4r/rest/spam_reports.rb +49 -69
- data/lib/sendgrid4r/rest/stats/advanced.rb +100 -102
- data/lib/sendgrid4r/rest/stats/category.rb +31 -33
- data/lib/sendgrid4r/rest/stats/global.rb +17 -19
- data/lib/sendgrid4r/rest/stats/parse.rb +18 -20
- data/lib/sendgrid4r/rest/stats/stats.rb +59 -69
- data/lib/sendgrid4r/rest/stats/subuser.rb +70 -32
- data/lib/sendgrid4r/rest/subusers.rb +106 -134
- data/lib/sendgrid4r/rest/transactional_templates/templates.rb +63 -0
- data/lib/sendgrid4r/rest/transactional_templates/versions.rb +90 -0
- data/lib/sendgrid4r/rest/users.rb +125 -57
- data/lib/sendgrid4r/rest/webhooks/event.rb +36 -42
- data/lib/sendgrid4r/rest/webhooks/parse.rb +28 -37
- data/lib/sendgrid4r/rest/whitelabel/domains.rb +176 -222
- data/lib/sendgrid4r/rest/whitelabel/ips.rb +107 -128
- data/lib/sendgrid4r/rest/whitelabel/links.rb +131 -167
- data/lib/sendgrid4r/version.rb +1 -1
- data/lib/sendgrid4r.rb +23 -13
- data/sendgrid4r.gemspec +1 -1
- data/spec/client_spec.rb +12 -1
- data/spec/factory/campaign_factory_spec.rb +75 -35
- data/spec/factory/condition_factory_spec.rb +19 -18
- data/spec/factory/segment_factory_spec.rb +28 -21
- data/spec/factory/version_factory_spec.rb +28 -27
- data/spec/photo.jpg +0 -0
- data/spec/rest/api_keys_management/api_keys_spec.rb +174 -0
- data/spec/rest/api_keys_management/permissions_spec.rb +54 -0
- data/spec/rest/blocks_spec.rb +78 -106
- data/spec/rest/bounces_spec.rb +91 -118
- data/spec/rest/cancel_scheduled_sends_spec.rb +94 -149
- data/spec/rest/categories_spec.rb +77 -0
- data/spec/rest/email_activity_spec.rb +151 -0
- data/spec/rest/invalid_emails_spec.rb +85 -119
- data/spec/rest/ip_access_management_spec.rb +157 -195
- data/spec/rest/ips/addresses_spec.rb +94 -122
- data/spec/rest/ips/pools_spec.rb +84 -112
- data/spec/rest/ips/warmup_spec.rb +63 -71
- data/spec/rest/mail/address_spec.rb +28 -0
- data/spec/rest/mail/attachment_spec.rb +48 -0
- data/spec/rest/mail/content_spec.rb +32 -0
- data/spec/rest/mail/mail_settings_spec.rb +51 -0
- data/spec/rest/mail/mail_spec.rb +136 -0
- data/spec/rest/mail/params_spec.rb +152 -0
- data/spec/rest/mail/personalization_spec.rb +66 -0
- data/spec/rest/mail/tracking_settings_spec.rb +63 -0
- data/spec/rest/marketing_campaigns/contacts/custom_fields_spec.rb +146 -0
- data/spec/rest/marketing_campaigns/contacts/lists_spec.rb +307 -0
- data/spec/rest/marketing_campaigns/contacts/recipients_spec.rb +331 -0
- data/spec/rest/marketing_campaigns/contacts/reserved_fields_spec.rb +119 -0
- data/spec/rest/marketing_campaigns/contacts/segments_spec.rb +268 -0
- data/spec/rest/marketing_campaigns/marketing_campaigns_spec.rb +427 -0
- data/spec/rest/marketing_campaigns/senders_spec.rb +230 -0
- data/spec/rest/settings/enforced_tls_spec.rb +38 -54
- data/spec/rest/settings/mail_spec.rb +227 -330
- data/spec/rest/settings/partner_spec.rb +40 -59
- data/spec/rest/settings/settings_spec.rb +44 -42
- data/spec/rest/settings/tracking_spec.rb +130 -189
- data/spec/rest/sm/global_unsubscribes_spec.rb +47 -72
- data/spec/rest/sm/groups_spec.rb +88 -123
- data/spec/rest/sm/sm_spec.rb +32 -30
- data/spec/rest/sm/suppressions_spec.rb +105 -140
- data/spec/rest/spam_reports_spec.rb +81 -109
- data/spec/rest/stats/advanced_spec.rb +67 -125
- data/spec/rest/stats/category_spec.rb +27 -45
- data/spec/rest/stats/global_spec.rb +34 -42
- data/spec/rest/stats/parse_spec.rb +32 -30
- data/spec/rest/stats/stats_spec.rb +174 -172
- data/spec/rest/stats/subuser_spec.rb +97 -57
- data/spec/rest/subusers_spec.rb +156 -209
- data/spec/rest/transactional_templates/templates_spec.rb +199 -0
- data/spec/rest/transactional_templates/versions_spec.rb +228 -0
- data/spec/rest/users_spec.rb +176 -91
- data/spec/rest/webhooks/event_spec.rb +59 -85
- data/spec/rest/webhooks/parse_spec.rb +51 -71
- data/spec/rest/whitelabel/domains_spec.rb +333 -513
- data/spec/rest/whitelabel/ips_spec.rb +109 -147
- data/spec/rest/whitelabel/links_spec.rb +181 -265
- metadata +70 -40
- data/lib/sendgrid4r/rest/api_keys/api_keys.rb +0 -80
- data/lib/sendgrid4r/rest/api_keys/permissions.rb +0 -33
- data/lib/sendgrid4r/rest/campaigns/campaigns.rb +0 -126
- data/lib/sendgrid4r/rest/categories/categories.rb +0 -43
- data/lib/sendgrid4r/rest/contacts/recipients.rb +0 -150
- data/lib/sendgrid4r/rest/contacts/segments.rb +0 -97
- data/lib/sendgrid4r/rest/email_activity/email_activity.rb +0 -81
- data/lib/sendgrid4r/rest/templates/templates.rb +0 -69
- data/lib/sendgrid4r/rest/templates/versions.rb +0 -95
- data/spec/rest/api_keys/api_keys_spec.rb +0 -210
- data/spec/rest/api_keys/permissions_spec.rb +0 -65
- data/spec/rest/campaigns/campaigns_spec.rb +0 -492
- data/spec/rest/categories/categories_spec.rb +0 -96
- data/spec/rest/contacts/custom_fields_spec.rb +0 -174
- data/spec/rest/contacts/lists_spec.rb +0 -372
- data/spec/rest/contacts/recipients_spec.rb +0 -343
- data/spec/rest/contacts/reserved_fields_spec.rb +0 -146
- data/spec/rest/contacts/segments_spec.rb +0 -307
- data/spec/rest/email_activity/email_activity_spec.rb +0 -179
- data/spec/rest/templates/templates_spec.rb +0 -222
- data/spec/rest/templates/versions_spec.rb +0 -252
@@ -1,75 +1,66 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
module SendGrid4r
|
4
|
-
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Ip Management
|
6
|
+
#
|
7
|
+
module Ips
|
5
8
|
#
|
6
|
-
# SendGrid Web API v3 Ip Management
|
9
|
+
# SendGrid Web API v3 Ip Management - Pools
|
7
10
|
#
|
8
|
-
module
|
9
|
-
|
10
|
-
# SendGrid Web API v3 Ip Management - Pools
|
11
|
-
#
|
12
|
-
module Addresses
|
13
|
-
include SendGrid4r::REST::Request
|
11
|
+
module Addresses
|
12
|
+
include Request
|
14
13
|
|
15
|
-
|
16
|
-
|
14
|
+
Address = Struct.new(
|
15
|
+
:ip, :pools, :warmup, :start_date, :subusers, :rdns, :pool_name
|
16
|
+
)
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
ips.push(SendGrid4r::REST::Ips::Addresses.create_address(address))
|
23
|
-
end
|
24
|
-
ips
|
25
|
-
end
|
18
|
+
def self.create_addresses(resp)
|
19
|
+
return resp if resp.nil?
|
20
|
+
resp.map { |address| Ips::Addresses.create_address(address) }
|
21
|
+
end
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
23
|
+
def self.create_address(resp)
|
24
|
+
return resp if resp.nil?
|
25
|
+
Address.new(
|
26
|
+
resp['ip'],
|
27
|
+
resp['pools'],
|
28
|
+
resp['warmup'],
|
29
|
+
resp['start_date'].nil? ? nil : Time.at(resp['start_date']),
|
30
|
+
resp['subusers'],
|
31
|
+
resp['rdns'],
|
32
|
+
resp['pool_name']
|
33
|
+
)
|
34
|
+
end
|
39
35
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
36
|
+
def self.url(ip = nil)
|
37
|
+
url = "#{BASE_URL}/ips"
|
38
|
+
url = "#{url}/#{ip}" unless ip.nil?
|
39
|
+
url
|
40
|
+
end
|
45
41
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
end
|
42
|
+
def post_ip_to_pool(pool_name:, ip:, &block)
|
43
|
+
resp = post(@auth, Ips::Pools.url(pool_name, :ips), ip: ip, &block)
|
44
|
+
Ips::Addresses.create_address(resp)
|
45
|
+
end
|
51
46
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
47
|
+
def get_ips(&block)
|
48
|
+
resp = get(@auth, Ips::Addresses.url, &block)
|
49
|
+
Ips::Addresses.create_addresses(resp)
|
50
|
+
end
|
56
51
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
52
|
+
def get_ips_assigned(&block)
|
53
|
+
resp = get(@auth, Ips::Addresses.url(:assigned), &block)
|
54
|
+
Ips::Addresses.create_addresses(resp)
|
55
|
+
end
|
62
56
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
end
|
57
|
+
def get_ip(ip:, &block)
|
58
|
+
resp = get(@auth, Ips::Addresses.url(ip), &block)
|
59
|
+
Ips::Addresses.create_address(resp)
|
60
|
+
end
|
68
61
|
|
69
|
-
|
70
|
-
|
71
|
-
delete(@auth, endpoint, &block)
|
72
|
-
end
|
62
|
+
def delete_ip_from_pool(pool_name:, ip:, &block)
|
63
|
+
delete(@auth, Ips::Pools.url(pool_name, :ips, ip), &block)
|
73
64
|
end
|
74
65
|
end
|
75
66
|
end
|
@@ -1,69 +1,58 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
module SendGrid4r
|
4
|
-
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Ip Management
|
6
|
+
#
|
7
|
+
module Ips
|
5
8
|
#
|
6
|
-
# SendGrid Web API v3 Ip Management
|
9
|
+
# SendGrid Web API v3 Ip Management - Pools
|
7
10
|
#
|
8
|
-
module
|
9
|
-
|
10
|
-
# SendGrid Web API v3 Ip Management - Pools
|
11
|
-
#
|
12
|
-
module Pools
|
13
|
-
include SendGrid4r::REST::Request
|
11
|
+
module Pools
|
12
|
+
include Request
|
14
13
|
|
15
|
-
|
14
|
+
Pool = Struct.new(:pool_name, :name, :ips)
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
pools.push(SendGrid4r::REST::Ips::Pools.create_pool(pool))
|
22
|
-
end
|
23
|
-
pools
|
24
|
-
end
|
16
|
+
def self.create_pools(resp)
|
17
|
+
return resp if resp.nil?
|
18
|
+
resp.map { |pool| Ips::Pools.create_pool(pool) }
|
19
|
+
end
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
Pool.new(resp['pool_name'], resp['name'], ips)
|
31
|
-
end
|
21
|
+
def self.create_pool(resp)
|
22
|
+
return resp if resp.nil?
|
23
|
+
Pool.new(resp['pool_name'], resp['name'], resp['ips'])
|
24
|
+
end
|
32
25
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
26
|
+
def self.url(name = nil, ips = nil, ip = nil)
|
27
|
+
url = "#{BASE_URL}/ips/pools"
|
28
|
+
url = "#{url}/#{name}" unless name.nil?
|
29
|
+
url = "#{url}/#{ips}" unless ips.nil?
|
30
|
+
url = "#{url}/#{ip}" unless ip.nil?
|
31
|
+
url
|
32
|
+
end
|
40
33
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
34
|
+
def post_pool(name:, &block)
|
35
|
+
resp = post(@auth, Ips::Pools.url, name: name, &block)
|
36
|
+
Ips::Pools.create_pool(resp)
|
37
|
+
end
|
46
38
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
39
|
+
def get_pools(&block)
|
40
|
+
resp = get(@auth, Ips::Pools.url, &block)
|
41
|
+
Ips::Pools.create_pools(resp)
|
42
|
+
end
|
51
43
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
44
|
+
def get_pool(name:, &block)
|
45
|
+
resp = get(@auth, Ips::Pools.url(name), &block)
|
46
|
+
Ips::Pools.create_pool(resp)
|
47
|
+
end
|
57
48
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
49
|
+
def put_pool(name:, new_name:, &block)
|
50
|
+
resp = put(@auth, Ips::Pools.url(name), name: new_name, &block)
|
51
|
+
Ips::Pools.create_pool(resp)
|
52
|
+
end
|
63
53
|
|
64
|
-
|
65
|
-
|
66
|
-
end
|
54
|
+
def delete_pool(name:, &block)
|
55
|
+
delete(@auth, Ips::Pools.url(name), &block)
|
67
56
|
end
|
68
57
|
end
|
69
58
|
end
|
@@ -1,60 +1,51 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
module SendGrid4r
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
endpoint = SendGrid4r::REST::Ips::Warmup.url
|
50
|
-
resp = post(@auth, endpoint, ip: ip, &block)
|
51
|
-
SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp)
|
52
|
-
end
|
53
|
-
|
54
|
-
def delete_warmup_ip(ip:, &block)
|
55
|
-
endpoint = SendGrid4r::REST::Ips::Warmup.url(ip)
|
56
|
-
delete(@auth, endpoint, &block)
|
57
|
-
end
|
3
|
+
module SendGrid4r::REST
|
4
|
+
module Ips
|
5
|
+
#
|
6
|
+
# SendGrid Web API v3 Ip Management - Warmup
|
7
|
+
#
|
8
|
+
module Warmup
|
9
|
+
include Request
|
10
|
+
|
11
|
+
WarmupIp = Struct.new(:ip, :start_date)
|
12
|
+
|
13
|
+
def self.create_warmup_ips(resp)
|
14
|
+
return resp if resp.nil?
|
15
|
+
resp.map { |warmup_ip| Ips::Warmup.create_warmup_ip(warmup_ip) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.create_warmup_ip(resp)
|
19
|
+
return resp if resp.nil?
|
20
|
+
WarmupIp.new(
|
21
|
+
resp['ip'],
|
22
|
+
resp['start_date'].nil? ? nil : Time.at(resp['start_date'])
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.url(ip_address = nil)
|
27
|
+
url = "#{BASE_URL}/ips/warmup"
|
28
|
+
url = "#{url}/#{ip_address}" unless ip_address.nil?
|
29
|
+
url
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_warmup_ips(&block)
|
33
|
+
resp = get(@auth, Ips::Warmup.url, &block)
|
34
|
+
Ips::Warmup.create_warmup_ips(resp)
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_warmup_ip(ip:, &block)
|
38
|
+
resp = get(@auth, Ips::Warmup.url(ip), &block)
|
39
|
+
Ips::Warmup.create_warmup_ip(resp)
|
40
|
+
end
|
41
|
+
|
42
|
+
def post_warmup_ip(ip:, &block)
|
43
|
+
resp = post(@auth, Ips::Warmup.url, ip: ip, &block)
|
44
|
+
Ips::Warmup.create_warmup_ip(resp)
|
45
|
+
end
|
46
|
+
|
47
|
+
def delete_warmup_ip(ip:, &block)
|
48
|
+
delete(@auth, Ips::Warmup.url(ip), &block)
|
58
49
|
end
|
59
50
|
end
|
60
51
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'base64'
|
4
|
+
|
5
|
+
module SendGrid4r::REST
|
6
|
+
#
|
7
|
+
# SendGrid Web API v3 Mail
|
8
|
+
#
|
9
|
+
module Mail
|
10
|
+
Attachment = Struct.new(
|
11
|
+
:content, :filename, :type, :disposition, :content_id
|
12
|
+
) do
|
13
|
+
def content=(content)
|
14
|
+
tap { |s| s[:content] = Base64.strict_encode64(content) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_h
|
18
|
+
super.reject { |_key, value| value.nil? }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Mail
|
6
|
+
#
|
7
|
+
module Mail
|
8
|
+
include Request
|
9
|
+
|
10
|
+
def self.url
|
11
|
+
"#{BASE_URL}/mail/send/beta"
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.warn_beta
|
15
|
+
warn(
|
16
|
+
'[WARN] Mail endpoint is currently in beta! Do not use '\
|
17
|
+
'this method in production. When this endpoint is ready for '\
|
18
|
+
'general release, your code might require an update in order to '\
|
19
|
+
'use the official one.'
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def send(params:, &block)
|
24
|
+
Mail.warn_beta
|
25
|
+
post(@auth, Mail.url, params.to_h, &block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Mail
|
6
|
+
#
|
7
|
+
module Mail
|
8
|
+
MailSettings = Struct.new(
|
9
|
+
:bcc, :bypass_list_management, :footer, :sandbox_mode, :spam_check
|
10
|
+
) do
|
11
|
+
def enable_bcc(email)
|
12
|
+
tap { |s| s[:bcc] = { enable: true, email: email } }
|
13
|
+
end
|
14
|
+
|
15
|
+
def disable_bcc
|
16
|
+
tap { |s| s[:bcc] = { enable: false } }
|
17
|
+
end
|
18
|
+
|
19
|
+
def enable_bypass_list_management
|
20
|
+
tap { |s| s[:bypass_list_management] = { enable: true } }
|
21
|
+
end
|
22
|
+
|
23
|
+
def disable_bypass_list_management
|
24
|
+
tap { |s| s[:bypass_list_management] = { enable: false } }
|
25
|
+
end
|
26
|
+
|
27
|
+
def enable_footer(text, html)
|
28
|
+
tap { |s| s[:footer] = { enable: true, text: text, html: html } }
|
29
|
+
end
|
30
|
+
|
31
|
+
def disable_footer
|
32
|
+
tap { |s| s[:footer] = { enable: false } }
|
33
|
+
end
|
34
|
+
|
35
|
+
def enable_sandbox_mode
|
36
|
+
tap { |s| s[:sandbox_mode] = { enable: true } }
|
37
|
+
end
|
38
|
+
|
39
|
+
def disable_sandbox_mode
|
40
|
+
tap { |s| s[:sandbox_mode] = { enable: false } }
|
41
|
+
end
|
42
|
+
|
43
|
+
def enable_spam_check(threshold, post_to_url)
|
44
|
+
tap do |s|
|
45
|
+
s[:spam_check] = {
|
46
|
+
enable: true,
|
47
|
+
threshold: threshold,
|
48
|
+
post_to_url: post_to_url
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def disable_spam_check
|
54
|
+
tap { |s| s[:spam_check] = { enable: false } }
|
55
|
+
end
|
56
|
+
|
57
|
+
def to_h
|
58
|
+
super.reject { |_key, value| value.nil? }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Mail
|
6
|
+
#
|
7
|
+
module Mail
|
8
|
+
Params = Struct.new(
|
9
|
+
:personalizations, :from, :content, :reply_to, :attachments,
|
10
|
+
:template_id, :sections, :headers, :categories, :custom_args,
|
11
|
+
:send_at, :batch_id, :asm, :ip_pool_name, :mail_settings,
|
12
|
+
:tracking_settings, :subject
|
13
|
+
) do
|
14
|
+
def personalizations=(personalizations)
|
15
|
+
tap do |s|
|
16
|
+
s[:personalizations] = personalizations.map(&:to_h)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def from=(from)
|
21
|
+
tap { |s| s[:from] = from.to_h }
|
22
|
+
end
|
23
|
+
|
24
|
+
def content=(content)
|
25
|
+
tap { |s| s[:content] = content.map(&:to_h) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def reply_to=(reply_to)
|
29
|
+
tap { |s| s[:reply_to] = reply_to.to_h }
|
30
|
+
end
|
31
|
+
|
32
|
+
def attachments=(attachments)
|
33
|
+
tap { |s| s[:attachments] = attachments.map(&:to_h) }
|
34
|
+
end
|
35
|
+
|
36
|
+
def send_at=(send_at)
|
37
|
+
tap { |s| s[:send_at] = send_at.to_i }
|
38
|
+
end
|
39
|
+
|
40
|
+
def asm=(asm)
|
41
|
+
if asm.is_a?(Fixnum)
|
42
|
+
tap { |s| s[:asm] = { group_id: asm } }
|
43
|
+
elsif asm.is_a?(Array)
|
44
|
+
tap do |s|
|
45
|
+
s[:asm] = { group_id: asm[0] }
|
46
|
+
s[:asm][:groups_to_display] = asm[1]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def mail_settings=(mail_settings)
|
52
|
+
tap { |s| s[:mail_settings] = mail_settings.to_h }
|
53
|
+
end
|
54
|
+
|
55
|
+
def tracking_settings=(tracking_settings)
|
56
|
+
tap { |s| s[:tracking_settings] = tracking_settings.to_h }
|
57
|
+
end
|
58
|
+
|
59
|
+
def to_h
|
60
|
+
super.reject { |_key, value| value.nil? }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Mail
|
6
|
+
#
|
7
|
+
module Mail
|
8
|
+
Personalization = Struct.new(
|
9
|
+
:to, :subject, :cc, :bcc, :headers, :substitutions, :custom_args,
|
10
|
+
:send_at
|
11
|
+
) do
|
12
|
+
def to=(to)
|
13
|
+
tap { |s| s[:to] = to.map(&:to_h) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def cc=(cc)
|
17
|
+
tap { |s| s[:cc] = cc.map(&:to_h) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def bcc=(bcc)
|
21
|
+
tap { |s| s[:bcc] = bcc.map(&:to_h) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def send_at=(send_at)
|
25
|
+
tap { |s| s[:send_at] = send_at.to_i }
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_h
|
29
|
+
super.reject { |_key, value| value.nil? }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module SendGrid4r::REST
|
4
|
+
#
|
5
|
+
# SendGrid Web API v3 Mail
|
6
|
+
#
|
7
|
+
module Mail
|
8
|
+
TrackingSettings = Struct.new(
|
9
|
+
:click_tracking, :open_tracking, :subscription_tracking,
|
10
|
+
:ganalytics
|
11
|
+
) do
|
12
|
+
def enable_click_tracking(enable_text)
|
13
|
+
tap do |s|
|
14
|
+
s[:click_tracking] = { enable: true, enable_text: enable_text }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def disable_click_tracking
|
19
|
+
tap { |s| s[:click_tracking] = { enable: false } }
|
20
|
+
end
|
21
|
+
|
22
|
+
def enable_open_tracking(substitution_tag)
|
23
|
+
tap do |s|
|
24
|
+
s[:open_tracking] = {
|
25
|
+
enable: true,
|
26
|
+
substitution_tag: substitution_tag
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def disable_open_tracking
|
32
|
+
tap { |s| s[:open_tracking] = { enable: false } }
|
33
|
+
end
|
34
|
+
|
35
|
+
def enable_subscription_tracking(text, html, substitution_tag)
|
36
|
+
tap do |s|
|
37
|
+
s[:subscription_tracking] = {
|
38
|
+
enable: true,
|
39
|
+
text: text,
|
40
|
+
html: html,
|
41
|
+
substitution_tag: substitution_tag
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def disable_subscription_tracking
|
47
|
+
tap { |s| s[:subscription_tracking] = { enable: false } }
|
48
|
+
end
|
49
|
+
|
50
|
+
def enable_ganalytics(
|
51
|
+
utm_source, utm_medium, utm_term, utm_content, utm_campaign
|
52
|
+
)
|
53
|
+
tap do |s|
|
54
|
+
s[:ganalytics] = {
|
55
|
+
enable: true,
|
56
|
+
utm_source: utm_source,
|
57
|
+
utm_medium: utm_medium,
|
58
|
+
utm_term: utm_term,
|
59
|
+
utm_content: utm_content,
|
60
|
+
utm_campaign: utm_campaign
|
61
|
+
}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def disable_ganalytics
|
66
|
+
tap { |s| s[:ganalytics] = { enable: false } }
|
67
|
+
end
|
68
|
+
|
69
|
+
def to_h
|
70
|
+
super.reject { |_key, value| value.nil? }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|