sendgrid4r 0.1.0 → 0.2.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 +4 -0
- data/lib/client.rb +2 -0
- data/lib/sendgrid4r/factory/condition_factory.rb +20 -0
- data/lib/sendgrid4r/factory/segment_factory.rb +21 -0
- data/lib/sendgrid4r/factory/version_factory.rb +20 -18
- data/lib/sendgrid4r/rest/api.rb +10 -0
- data/lib/sendgrid4r/rest/contacts/custom_fields.rb +79 -0
- data/lib/sendgrid4r/rest/contacts/lists.rb +124 -0
- data/lib/sendgrid4r/rest/contacts/recipients.rb +176 -0
- data/lib/sendgrid4r/rest/contacts/reserved_fields.rb +50 -0
- data/lib/sendgrid4r/rest/contacts/segments.rb +102 -0
- data/lib/sendgrid4r/rest/request.rb +38 -38
- data/lib/sendgrid4r/rest/stats/category.rb +0 -1
- data/lib/sendgrid4r/version.rb +1 -1
- data/spec/asm/suppressions_spec.rb +6 -3
- data/spec/client_spec.rb +38 -1
- data/spec/contacts/custom_fields_spec.rb +102 -0
- data/spec/contacts/lists_spec.rb +150 -0
- data/spec/contacts/recipients_spec.rb +200 -0
- data/spec/contacts/reserved_fields_spec.rb +128 -0
- data/spec/contacts/segments_spec.rb +170 -0
- data/spec/factory/condition_factory_spec.rb +25 -0
- data/spec/factory/segment_factory_spec.rb +30 -0
- data/spec/{version_factory_spec.rb → factory/version_factory_spec.rb} +3 -3
- data/spec/stats/category_spec.rb +1 -1
- data/spec/stats/subuser_spec.rb +1 -1
- data/spec/templates/versions_spec.rb +1 -1
- metadata +25 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e77f18ddd75a6b86d7d8fe6fb50b3cb64ec8955
|
4
|
+
data.tar.gz: d594830d614fe4ba1c7b648d3a3929f904bdbca5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f5845e151068e2cfe8d78dd19914b8ba76dad7d4f747f1a36bf292d7cb1b4f977afc406f334581f41c92a9edffc719d265551512bf622f267ff8a993eeccad8
|
7
|
+
data.tar.gz: a998a7a72c8c0400066bc3576b51f4182155db45cea319fc7bda6ebf93f4decfcbaf2c70ebd24ce5e724550f7c568c16fcad64959750de8a60372294ebc969ab
|
data/.rubocop.yml
CHANGED
data/lib/client.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
module SendGrid4r
|
5
|
+
module Factory
|
6
|
+
#
|
7
|
+
# SendGrid Web API v3 Condition Factory Class implementation
|
8
|
+
#
|
9
|
+
class ConditionFactory
|
10
|
+
def create(field:, value:, operator:, and_or:)
|
11
|
+
SendGrid4r::REST::Contacts::Segments::Condition.new(
|
12
|
+
field,
|
13
|
+
value,
|
14
|
+
operator,
|
15
|
+
and_or
|
16
|
+
).to_h
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
module SendGrid4r
|
5
|
+
module Factory
|
6
|
+
#
|
7
|
+
# SendGrid Web API v3 Segment Factory Class implementation
|
8
|
+
#
|
9
|
+
class SegmentFactory
|
10
|
+
def create(name:, conditions:)
|
11
|
+
SendGrid4r::REST::Contacts::Segments::Segment.new(
|
12
|
+
nil,
|
13
|
+
name,
|
14
|
+
nil,
|
15
|
+
conditions,
|
16
|
+
nil
|
17
|
+
).to_h
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -2,24 +2,26 @@
|
|
2
2
|
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
3
|
|
4
4
|
module SendGrid4r
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
5
|
+
module Factory
|
6
|
+
#
|
7
|
+
# SendGrid Web API v3 Factory Class implementation
|
8
|
+
#
|
9
|
+
class VersionFactory
|
10
|
+
def create(
|
11
|
+
name:, subject: '<%subject%>',
|
12
|
+
html_content: '<%body%>', plain_content: '<%body%>', active: 1)
|
13
|
+
SendGrid4r::REST::Templates::Version.new(
|
14
|
+
nil,
|
15
|
+
nil,
|
16
|
+
nil,
|
17
|
+
active,
|
18
|
+
name,
|
19
|
+
html_content,
|
20
|
+
plain_content,
|
21
|
+
subject,
|
22
|
+
nil
|
23
|
+
)
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
data/lib/sendgrid4r/rest/api.rb
CHANGED
@@ -17,6 +17,11 @@ require 'sendgrid4r/rest/stats/category'
|
|
17
17
|
require 'sendgrid4r/rest/stats/subuser'
|
18
18
|
require 'sendgrid4r/rest/stats/advanced'
|
19
19
|
require 'sendgrid4r/rest/stats/parse'
|
20
|
+
require 'sendgrid4r/rest/contacts/custom_fields'
|
21
|
+
require 'sendgrid4r/rest/contacts/lists'
|
22
|
+
require 'sendgrid4r/rest/contacts/recipients'
|
23
|
+
require 'sendgrid4r/rest/contacts/reserved_fields'
|
24
|
+
require 'sendgrid4r/rest/contacts/segments'
|
20
25
|
|
21
26
|
module SendGrid4r
|
22
27
|
module REST
|
@@ -39,6 +44,11 @@ module SendGrid4r
|
|
39
44
|
include SendGrid4r::REST::Stats::Subuser
|
40
45
|
include SendGrid4r::REST::Stats::Advanced
|
41
46
|
include SendGrid4r::REST::Stats::Parse
|
47
|
+
include SendGrid4r::REST::Contacts::CustomFields
|
48
|
+
include SendGrid4r::REST::Contacts::Lists
|
49
|
+
include SendGrid4r::REST::Contacts::Recipients
|
50
|
+
include SendGrid4r::REST::Contacts::ReservedFields
|
51
|
+
include SendGrid4r::REST::Contacts::Segments
|
42
52
|
end
|
43
53
|
end
|
44
54
|
end
|
@@ -0,0 +1,79 @@
|
|
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 Contacts
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Contacts - Custom Fields
|
11
|
+
#
|
12
|
+
module CustomFields
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Field = Struct.new(:id, :name, :type, :value) do
|
16
|
+
def eql?(other)
|
17
|
+
id.eql?(other.id)
|
18
|
+
end
|
19
|
+
|
20
|
+
def hash
|
21
|
+
id.hash
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
Fields = Struct.new(:custom_fields)
|
26
|
+
|
27
|
+
def self.url(custom_field_id = nil)
|
28
|
+
url = "#{SendGrid4r::Client::BASE_URL}/contactdb/custom_fields"
|
29
|
+
url = "#{url}/#{custom_field_id}" unless custom_field_id.nil?
|
30
|
+
url
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.create_field(resp)
|
34
|
+
Field.new(resp['id'], resp['name'], resp['type'], resp['value'])
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.create_fields(resp)
|
38
|
+
custom_fields = []
|
39
|
+
resp['custom_fields'].each do |field|
|
40
|
+
custom_fields.push(
|
41
|
+
SendGrid4r::REST::Contacts::CustomFields.create_field(field)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
Fields.new(custom_fields)
|
45
|
+
end
|
46
|
+
|
47
|
+
def post_custom_field(name, type)
|
48
|
+
params = {}
|
49
|
+
params['name'] = name
|
50
|
+
params['type'] = type
|
51
|
+
resp = post(
|
52
|
+
@auth, SendGrid4r::REST::Contacts::CustomFields.url, params
|
53
|
+
)
|
54
|
+
SendGrid4r::REST::Contacts::CustomFields.create_field(resp)
|
55
|
+
end
|
56
|
+
|
57
|
+
def get_custom_fields
|
58
|
+
resp = get(@auth, SendGrid4r::REST::Contacts::CustomFields.url)
|
59
|
+
SendGrid4r::REST::Contacts::CustomFields.create_fields(resp)
|
60
|
+
end
|
61
|
+
|
62
|
+
def get_custom_field(custom_field_id)
|
63
|
+
resp = get(
|
64
|
+
@auth,
|
65
|
+
SendGrid4r::REST::Contacts::CustomFields.url(custom_field_id)
|
66
|
+
)
|
67
|
+
SendGrid4r::REST::Contacts::CustomFields.create_field(resp)
|
68
|
+
end
|
69
|
+
|
70
|
+
def delete_custom_field(custom_field_id)
|
71
|
+
delete(
|
72
|
+
@auth,
|
73
|
+
SendGrid4r::REST::Contacts::CustomFields.url(custom_field_id)
|
74
|
+
)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,124 @@
|
|
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 Contacts
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Contacts - Lists
|
11
|
+
#
|
12
|
+
module Lists
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
List = Struct.new(:id, :name, :recipient_count)
|
16
|
+
Lists = Struct.new(:lists)
|
17
|
+
|
18
|
+
def self.url(list_id = nil)
|
19
|
+
url = "#{SendGrid4r::Client::BASE_URL}/contactdb/lists"
|
20
|
+
url = "#{url}/#{list_id}" unless list_id.nil?
|
21
|
+
url
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.recipients_url(list_id, recipient_id = nil)
|
25
|
+
url = "#{SendGrid4r::REST::Contacts::Lists.url(list_id)}/recipients"
|
26
|
+
url = "#{url}/#{recipient_id}" unless recipient_id.nil?
|
27
|
+
url
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.create_list(resp)
|
31
|
+
List.new(resp['id'], resp['name'], resp['recipient_count'])
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.create_lists(resp)
|
35
|
+
lists = []
|
36
|
+
resp['lists'].each do |list|
|
37
|
+
lists.push(SendGrid4r::REST::Contacts::Lists.create_list(list))
|
38
|
+
end
|
39
|
+
Lists.new(lists)
|
40
|
+
end
|
41
|
+
|
42
|
+
def post_list(name)
|
43
|
+
params = {}
|
44
|
+
params['name'] = name
|
45
|
+
resp = post(@auth, SendGrid4r::REST::Contacts::Lists.url, params)
|
46
|
+
SendGrid4r::REST::Contacts::Lists.create_list(resp)
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_lists
|
50
|
+
resp = get(@auth, SendGrid4r::REST::Contacts::Lists.url)
|
51
|
+
SendGrid4r::REST::Contacts::Lists.create_lists(resp)
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_list(list_id)
|
55
|
+
resp = get(@auth, SendGrid4r::REST::Contacts::Lists.url(list_id))
|
56
|
+
SendGrid4r::REST::Contacts::Lists.create_list(resp)
|
57
|
+
end
|
58
|
+
|
59
|
+
def patch_list(list_id, name)
|
60
|
+
params = {}
|
61
|
+
params['name'] = name
|
62
|
+
resp = patch(
|
63
|
+
@auth,
|
64
|
+
SendGrid4r::REST::Contacts::Lists.url(list_id),
|
65
|
+
params
|
66
|
+
)
|
67
|
+
SendGrid4r::REST::Contacts::Lists.create_list(resp)
|
68
|
+
end
|
69
|
+
|
70
|
+
def delete_list(list_id)
|
71
|
+
delete(@auth, SendGrid4r::REST::Contacts::Lists.url(list_id))
|
72
|
+
end
|
73
|
+
|
74
|
+
# no bodies returned
|
75
|
+
def post_recipients_to_list(list_id, recipients)
|
76
|
+
url = SendGrid4r::REST::Contacts::Lists.url(list_id)
|
77
|
+
post(
|
78
|
+
@auth,
|
79
|
+
"#{url}/recipients_batch",
|
80
|
+
recipients
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
def get_recipients_from_list(list_id, limit = nil, offset = nil)
|
85
|
+
params = {}
|
86
|
+
params['limit'] = limit unless limit.nil?
|
87
|
+
params['offset'] = offset unless offset.nil?
|
88
|
+
resp = get(
|
89
|
+
@auth,
|
90
|
+
SendGrid4r::REST::Contacts::Lists.recipients_url(list_id),
|
91
|
+
params
|
92
|
+
)
|
93
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
|
94
|
+
end
|
95
|
+
|
96
|
+
def post_recipient_to_list(list_id, recipient_id)
|
97
|
+
post(
|
98
|
+
@auth,
|
99
|
+
SendGrid4r::REST::Contacts::Lists.recipients_url(
|
100
|
+
list_id, recipient_id
|
101
|
+
)
|
102
|
+
)
|
103
|
+
end
|
104
|
+
|
105
|
+
def delete_recipient_from_list(list_id, recipient_id)
|
106
|
+
delete(
|
107
|
+
@auth,
|
108
|
+
SendGrid4r::REST::Contacts::Lists.recipients_url(
|
109
|
+
list_id, recipient_id
|
110
|
+
)
|
111
|
+
)
|
112
|
+
end
|
113
|
+
|
114
|
+
def delete_lists(list_ids)
|
115
|
+
delete(
|
116
|
+
@auth,
|
117
|
+
"#{SendGrid4r::Client::BASE_URL}/contactdb/lists_batch",
|
118
|
+
list_ids
|
119
|
+
)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,176 @@
|
|
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 Contacts
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Contacts - Recipients
|
11
|
+
#
|
12
|
+
module Recipients
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Recipient = Struct.new(
|
16
|
+
:created_at,
|
17
|
+
:custom_fields,
|
18
|
+
:email,
|
19
|
+
:first_name,
|
20
|
+
:id,
|
21
|
+
:last_clicked,
|
22
|
+
:last_emailed,
|
23
|
+
:last_name,
|
24
|
+
:last_opened,
|
25
|
+
:updated_at
|
26
|
+
)
|
27
|
+
|
28
|
+
Recipients = Struct.new(:recipients)
|
29
|
+
|
30
|
+
def self.create_recipient(resp)
|
31
|
+
custom_fields = []
|
32
|
+
resp['custom_fields'].each do |field|
|
33
|
+
custom_fields.push(
|
34
|
+
SendGrid4r::REST::Contacts::CustomFields.create_field(field)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
Recipient.new(
|
38
|
+
resp['created_at'],
|
39
|
+
custom_fields,
|
40
|
+
resp['email'],
|
41
|
+
resp['first_name'],
|
42
|
+
resp['id'],
|
43
|
+
resp['last_clicked'],
|
44
|
+
resp['last_emailed'],
|
45
|
+
resp['last_name'],
|
46
|
+
resp['last_opend'],
|
47
|
+
resp['updated_at']
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.create_recipients(resp)
|
52
|
+
recipients = []
|
53
|
+
resp['recipients'].each do |recipient|
|
54
|
+
recipients.push(
|
55
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipient(recipient)
|
56
|
+
)
|
57
|
+
end
|
58
|
+
Recipients.new(recipients)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.url(recipient_id = nil)
|
62
|
+
url = "#{SendGrid4r::Client::BASE_URL}/contactdb/recipients"
|
63
|
+
url = "#{url}/#{recipient_id}" unless recipient_id.nil?
|
64
|
+
url
|
65
|
+
end
|
66
|
+
|
67
|
+
def post_recipient(params)
|
68
|
+
resp = post(@auth, SendGrid4r::REST::Contacts::Recipients.url, params)
|
69
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipient(resp)
|
70
|
+
end
|
71
|
+
|
72
|
+
def delete_recipients(emails)
|
73
|
+
delete(@auth, SendGrid4r::REST::Contacts::Recipients.url, emails)
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_recipients(limit = nil, offset = nil)
|
77
|
+
params = {}
|
78
|
+
params['limit'] = limit unless limit.nil?
|
79
|
+
params['offset'] = offset unless offset.nil?
|
80
|
+
if params.length > 0
|
81
|
+
resp = get(
|
82
|
+
@auth, SendGrid4r::REST::Contacts::Recipients.url, params
|
83
|
+
)
|
84
|
+
else
|
85
|
+
resp = get(
|
86
|
+
@auth, SendGrid4r::REST::Contacts::Recipients.url
|
87
|
+
)
|
88
|
+
end
|
89
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
|
90
|
+
end
|
91
|
+
|
92
|
+
def get_recipients_by_id(recipient_ids)
|
93
|
+
resp = get(
|
94
|
+
@auth,
|
95
|
+
"#{SendGrid4r::REST::Contacts::Recipients.url}/batch",
|
96
|
+
nil,
|
97
|
+
recipient_ids
|
98
|
+
)
|
99
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
|
100
|
+
end
|
101
|
+
|
102
|
+
def get_recipients_count
|
103
|
+
resp = get(
|
104
|
+
@auth, "#{SendGrid4r::REST::Contacts::Recipients.url}/count")
|
105
|
+
resp['recipient_count']
|
106
|
+
end
|
107
|
+
|
108
|
+
def search_recipients(params)
|
109
|
+
resp = get(
|
110
|
+
@auth,
|
111
|
+
"#{SendGrid4r::REST::Contacts::Recipients.url}/search",
|
112
|
+
params
|
113
|
+
)
|
114
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
|
115
|
+
end
|
116
|
+
|
117
|
+
def get_recipient(recipient_id)
|
118
|
+
resp = get(
|
119
|
+
@auth,
|
120
|
+
SendGrid4r::REST::Contacts::Recipients.url(recipient_id)
|
121
|
+
)
|
122
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipient(resp)
|
123
|
+
end
|
124
|
+
|
125
|
+
def delete_recipient(recipient_id)
|
126
|
+
delete(
|
127
|
+
@auth, SendGrid4r::REST::Contacts::Recipients.url(recipient_id)
|
128
|
+
)
|
129
|
+
end
|
130
|
+
|
131
|
+
def get_lists_recipient_belong(recipient_id)
|
132
|
+
resp = get(
|
133
|
+
@auth,
|
134
|
+
"#{SendGrid4r::REST::Contacts::Recipients.url(recipient_id)}/lists"
|
135
|
+
)
|
136
|
+
SendGrid4r::REST::Contacts::Lists.create_lists(resp)
|
137
|
+
end
|
138
|
+
|
139
|
+
def post_recipients(recipients)
|
140
|
+
resp = post(
|
141
|
+
@auth,
|
142
|
+
"#{SendGrid4r::Client::BASE_URL}/contactdb/recipients_batch",
|
143
|
+
recipients
|
144
|
+
)
|
145
|
+
SendGrid4r::REST::Contacts::Recipients.create_result(resp)
|
146
|
+
end
|
147
|
+
|
148
|
+
ResultAddMultiple = Struct.new(
|
149
|
+
:error_count,
|
150
|
+
:error_indices,
|
151
|
+
:new_count,
|
152
|
+
:persisted_recipients,
|
153
|
+
:updated_count
|
154
|
+
)
|
155
|
+
|
156
|
+
def self.create_result(resp)
|
157
|
+
error_indices = []
|
158
|
+
resp['error_indices'].each do |index|
|
159
|
+
error_indices.push(index)
|
160
|
+
end
|
161
|
+
persisted_recipients = []
|
162
|
+
resp['persisted_recipients'].each do |value|
|
163
|
+
persisted_recipients.push(value)
|
164
|
+
end
|
165
|
+
ResultAddMultiple.new(
|
166
|
+
resp['error_count'],
|
167
|
+
error_indices,
|
168
|
+
resp['new_count'],
|
169
|
+
persisted_recipients,
|
170
|
+
resp['updated_count']
|
171
|
+
)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,50 @@
|
|
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 Contacts
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Contacts - Reserved Fields
|
11
|
+
#
|
12
|
+
module ReservedFields
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Field = Struct.new(:name, :type) do
|
16
|
+
def eql?(other)
|
17
|
+
name.eql?(other.name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def hash
|
21
|
+
name.hash
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
Fields = Struct.new(:reserved_fields)
|
26
|
+
|
27
|
+
def self.create_fields(resp)
|
28
|
+
reserved_fields = []
|
29
|
+
resp['reserved_fields'].each do |field|
|
30
|
+
reserved_fields.push(
|
31
|
+
SendGrid4r::REST::Contacts::ReservedFields.create_field(field)
|
32
|
+
)
|
33
|
+
end
|
34
|
+
Fields.new(reserved_fields)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.create_field(resp)
|
38
|
+
Field.new(resp['name'], resp['type'])
|
39
|
+
end
|
40
|
+
|
41
|
+
def get_reserved_fields
|
42
|
+
resp = get(
|
43
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/contactdb/reserved_fields"
|
44
|
+
)
|
45
|
+
SendGrid4r::REST::Contacts::ReservedFields.create_fields(resp)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,102 @@
|
|
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 Contacts
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Contacts - Segments
|
11
|
+
#
|
12
|
+
module Segments
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Condition = Struct.new(
|
16
|
+
:field, :value, :operator, :and_or
|
17
|
+
)
|
18
|
+
Segment = Struct.new(
|
19
|
+
:id, :name, :list_id, :conditions, :recipient_count
|
20
|
+
)
|
21
|
+
Segments = Struct.new(:segments)
|
22
|
+
|
23
|
+
def self.url(segment_id = nil)
|
24
|
+
url = "#{SendGrid4r::Client::BASE_URL}/contactdb/segments"
|
25
|
+
url = "#{url}/#{segment_id}" unless segment_id.nil?
|
26
|
+
url
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.create_condition(resp)
|
30
|
+
Condition.new(
|
31
|
+
resp['field'], resp['value'], resp['operator'], resp['and_or']
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.create_segment(resp)
|
36
|
+
conditions = []
|
37
|
+
resp['conditions'].each do |condition|
|
38
|
+
conditions.push(
|
39
|
+
SendGrid4r::REST::Contacts::Segments.create_condition(condition)
|
40
|
+
)
|
41
|
+
end
|
42
|
+
Segment.new(
|
43
|
+
resp['id'],
|
44
|
+
resp['name'],
|
45
|
+
resp['list_id'],
|
46
|
+
conditions,
|
47
|
+
resp['recipient_count']
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.create_segments(resp)
|
52
|
+
segments = []
|
53
|
+
resp['segments'].each do |segment|
|
54
|
+
segments.push(
|
55
|
+
SendGrid4r::REST::Contacts::Segments.create_segment(segment)
|
56
|
+
)
|
57
|
+
end
|
58
|
+
Segments.new(segments)
|
59
|
+
end
|
60
|
+
|
61
|
+
def post_segment(params)
|
62
|
+
resp = post(
|
63
|
+
@auth, SendGrid4r::REST::Contacts::Segments.url, params.to_h
|
64
|
+
)
|
65
|
+
SendGrid4r::REST::Contacts::Segments.create_segment(resp)
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_segments
|
69
|
+
resp = get(@auth, SendGrid4r::REST::Contacts::Segments.url)
|
70
|
+
SendGrid4r::REST::Contacts::Segments.create_segments(resp)
|
71
|
+
end
|
72
|
+
|
73
|
+
def get_segment(segment_id)
|
74
|
+
resp = get(
|
75
|
+
@auth, SendGrid4r::REST::Contacts::Segments.url(segment_id)
|
76
|
+
)
|
77
|
+
SendGrid4r::REST::Contacts::Segments.create_segment(resp)
|
78
|
+
end
|
79
|
+
|
80
|
+
def put_segment(segment_id, params)
|
81
|
+
resp = put(
|
82
|
+
@auth, SendGrid4r::REST::Contacts::Segments.url(segment_id), params
|
83
|
+
)
|
84
|
+
SendGrid4r::REST::Contacts::Segments.create_segment(resp)
|
85
|
+
end
|
86
|
+
|
87
|
+
def delete_segment(segment_id)
|
88
|
+
delete(@auth, SendGrid4r::REST::Contacts::Segments.url(segment_id))
|
89
|
+
end
|
90
|
+
|
91
|
+
def get_recipients_from_segment(segment_id, limit = nil, offset = nil)
|
92
|
+
params = {}
|
93
|
+
params['limit'] = limit unless limit.nil?
|
94
|
+
params['offset'] = offset unless offset.nil?
|
95
|
+
url = SendGrid4r::REST::Contacts::Segments.url(segment_id)
|
96
|
+
resp = get(@auth, "#{url}/recipients", params)
|
97
|
+
SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|