sendgrid4r 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +4 -1
  3. data/.travis.yml +1 -1
  4. data/lib/client.rb +0 -2
  5. data/lib/sendgrid4r/rest/api.rb +4 -0
  6. data/lib/sendgrid4r/rest/api_keys/api_keys.rb +4 -10
  7. data/lib/sendgrid4r/rest/asm/global_suppressions.rb +9 -16
  8. data/lib/sendgrid4r/rest/asm/groups.rb +3 -7
  9. data/lib/sendgrid4r/rest/asm/suppressions.rb +25 -18
  10. data/lib/sendgrid4r/rest/categories/categories.rb +1 -3
  11. data/lib/sendgrid4r/rest/contacts/custom_fields.rb +1 -1
  12. data/lib/sendgrid4r/rest/contacts/lists.rb +15 -37
  13. data/lib/sendgrid4r/rest/contacts/recipients.rb +19 -44
  14. data/lib/sendgrid4r/rest/contacts/reserved_fields.rb +1 -5
  15. data/lib/sendgrid4r/rest/contacts/segments.rb +9 -16
  16. data/lib/sendgrid4r/rest/email_activity/email_activity.rb +84 -0
  17. data/lib/sendgrid4r/rest/ips/addresses.rb +9 -18
  18. data/lib/sendgrid4r/rest/ips/pools.rb +7 -12
  19. data/lib/sendgrid4r/rest/ips/warmup.rb +7 -17
  20. data/lib/sendgrid4r/rest/request.rb +7 -1
  21. data/lib/sendgrid4r/rest/settings/enforced_tls.rb +5 -12
  22. data/lib/sendgrid4r/rest/stats/advanced.rb +10 -32
  23. data/lib/sendgrid4r/rest/stats/category.rb +4 -11
  24. data/lib/sendgrid4r/rest/stats/global.rb +3 -2
  25. data/lib/sendgrid4r/rest/stats/parse.rb +4 -6
  26. data/lib/sendgrid4r/rest/stats/subuser.rb +4 -11
  27. data/lib/sendgrid4r/rest/subusers/subusers.rb +83 -0
  28. data/lib/sendgrid4r/rest/templates/templates.rb +1 -1
  29. data/lib/sendgrid4r/rest/templates/versions.rb +3 -2
  30. data/lib/sendgrid4r/version.rb +1 -1
  31. data/spec/client_spec.rb +17 -4
  32. data/spec/factory/condition_factory_spec.rb +1 -1
  33. data/spec/factory/segment_factory_spec.rb +1 -1
  34. data/spec/factory/version_factory_spec.rb +1 -1
  35. data/spec/{api_keys → rest/api_keys}/api_keys_spec.rb +52 -18
  36. data/spec/{asm → rest/asm}/asm_spec.rb +23 -17
  37. data/spec/{asm → rest/asm}/global_suppressions_spec.rb +45 -2
  38. data/spec/{asm → rest/asm}/groups_spec.rb +76 -7
  39. data/spec/{asm → rest/asm}/suppressions_spec.rb +95 -20
  40. data/spec/{categories → rest/categories}/categories_spec.rb +27 -7
  41. data/spec/{contacts → rest/contacts}/custom_fields_spec.rb +49 -15
  42. data/spec/{contacts → rest/contacts}/lists_spec.rb +138 -15
  43. data/spec/{contacts → rest/contacts}/recipients_spec.rb +141 -26
  44. data/spec/{contacts → rest/contacts}/reserved_fields_spec.rb +29 -13
  45. data/spec/{contacts → rest/contacts}/segments_spec.rb +108 -31
  46. data/spec/rest/email_activity/email_activity_spec.rb +192 -0
  47. data/spec/{ips → rest/ips}/addresses_spec.rb +58 -18
  48. data/spec/{ips → rest/ips}/pools_spec.rb +80 -45
  49. data/spec/{ips → rest/ips}/warmup_spec.rb +50 -7
  50. data/spec/{settings → rest/settings}/enforced_tls_spec.rb +32 -7
  51. data/spec/{stats → rest/stats}/advanced_spec.rb +2 -2
  52. data/spec/{stats → rest/stats}/category_spec.rb +2 -2
  53. data/spec/{stats → rest/stats}/global_spec.rb +2 -2
  54. data/spec/{stats → rest/stats}/parse_spec.rb +2 -2
  55. data/spec/{stats → rest/stats}/stats_spec.rb +2 -2
  56. data/spec/{stats → rest/stats}/subuser_spec.rb +2 -2
  57. data/spec/rest/subusers/subusers_spec.rb +246 -0
  58. data/spec/{templates → rest/templates}/templates_spec.rb +55 -15
  59. data/spec/{templates → rest/templates}/versions_spec.rb +44 -7
  60. metadata +54 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18804ec5896082dcfa570e2b27a7d58ab6092903
4
- data.tar.gz: 09f1702cbe8b86550e66a8f8522b593562ce177d
3
+ metadata.gz: b7417acd0a5a7f7568d4b05a42983b09da86d716
4
+ data.tar.gz: eba6a546a827b39af30df5128b267d5432820c80
5
5
  SHA512:
6
- metadata.gz: cee31b5daa5bdc9b0fb90a7d16b0f7c7ce6efe375870c17200294b57f7c80b87110c3b3a580e985a91f3a1cbcb4ae4c4bf11aad91ecf9559096e917d7125e7ed
7
- data.tar.gz: cdac0d4cbbd0308f9c0eb2945f0e566893543f2fb6e5d4f4dd427dfdb9a07e5aa83a64de52e8b44f94ea4f1e4169b13e756180b3a399a49b20f927e28710b763
6
+ metadata.gz: 8bf55ba5f91ea40f8e9062208b87597a0242526a3101bddd52f6da55c537a99478bccb357676eb99b67bdac5aff8d9b69f17fb9fe4f42e2bad74c6170db39f4d
7
+ data.tar.gz: 8573913c991b79f02d8c39168e41f574b63ceba5abc4151b1e89d2a0083a8c442c488b5e4b9dbfbaa2958622f6000e6144730f2809e2c5d21fc9c633651b309e
data/.env.example CHANGED
@@ -1,7 +1,10 @@
1
1
  SENDGRID_USERNAME=sendgrid username
2
2
  SENDGRID_PASSWORD=sendgrid_password
3
3
  API_KEY=apikey
4
- USE_SILVER=true
5
4
  SILVER_SENDGRID_USERNAME=silver_sendgrid_username
6
5
  SILVER_SENDGRID_PASSWORD=silver_sendgird_password
7
6
  SILVER_SUBUSER=subusername
7
+ SILVER_SUBUSER2=subusername
8
+ SUBUSER1=subusername
9
+ SUBPASS1=password
10
+ SUBMAIL1=email@email.com
data/.travis.yml CHANGED
@@ -5,4 +5,4 @@ before_script:
5
5
  - bundle install
6
6
  script:
7
7
  - rubocop --fail-level=W
8
- - rspec
8
+ - rspec --tag ut
data/lib/client.rb CHANGED
@@ -14,8 +14,6 @@ module SendGrid4r
14
14
  class Client
15
15
  include SendGrid4r::REST::API
16
16
 
17
- BASE_URL = 'https://api.sendgrid.com/v3'
18
-
19
17
  def initialize(
20
18
  username: username, password: password, api_key: api_key = nil
21
19
  )
@@ -24,6 +24,8 @@ require 'sendgrid4r/rest/contacts/recipients'
24
24
  require 'sendgrid4r/rest/contacts/reserved_fields'
25
25
  require 'sendgrid4r/rest/contacts/segments'
26
26
  require 'sendgrid4r/rest/api_keys/api_keys'
27
+ require 'sendgrid4r/rest/subusers/subusers'
28
+ require 'sendgrid4r/rest/email_activity/email_activity'
27
29
 
28
30
  module SendGrid4r
29
31
  module REST
@@ -53,6 +55,8 @@ module SendGrid4r
53
55
  include SendGrid4r::REST::Contacts::ReservedFields
54
56
  include SendGrid4r::REST::Contacts::Segments
55
57
  include SendGrid4r::REST::ApiKeys
58
+ include SendGrid4r::REST::Subusers
59
+ include SendGrid4r::REST::EmailActivity
56
60
  end
57
61
  end
58
62
  end
@@ -15,7 +15,7 @@ module SendGrid4r
15
15
  ApiKey = Struct.new(:name, :api_key_id, :api_key, :scope_set_id)
16
16
 
17
17
  def self.url(api_key = nil)
18
- url = "#{SendGrid4r::Client::BASE_URL}/api_keys"
18
+ url = "#{BASE_URL}/api_keys"
19
19
  url = "#{url}/#{api_key}" unless api_key.nil?
20
20
  url
21
21
  end
@@ -47,9 +47,7 @@ module SendGrid4r
47
47
  def post_api_key(name, &block)
48
48
  params = {}
49
49
  params['name'] = name
50
- resp = post(
51
- @auth, SendGrid4r::REST::ApiKeys.url, params, &block
52
- )
50
+ resp = post(@auth, SendGrid4r::REST::ApiKeys.url, params, &block)
53
51
  SendGrid4r::REST::ApiKeys.create_api_key(resp)
54
52
  end
55
53
 
@@ -60,12 +58,8 @@ module SendGrid4r
60
58
  def patch_api_key(api_key, name, &block)
61
59
  params = {}
62
60
  params['name'] = name
63
- resp = patch(
64
- @auth,
65
- SendGrid4r::REST::ApiKeys.url(api_key),
66
- params,
67
- &block
68
- )
61
+ endpoint = SendGrid4r::REST::ApiKeys.url(api_key)
62
+ resp = patch(@auth, endpoint, params, &block)
69
63
  SendGrid4r::REST::ApiKeys.create_api_key(resp)
70
64
  end
71
65
  end
@@ -13,36 +13,29 @@ module SendGrid4r
13
13
  include SendGrid4r::REST::Request
14
14
 
15
15
  def self.url(email_address = nil)
16
- url = "#{SendGrid4r::Client::BASE_URL}/asm/suppressions/global"
16
+ url = "#{BASE_URL}/asm/suppressions/global"
17
17
  url = "#{url}/#{email_address}" unless email_address.nil?
18
18
  url
19
19
  end
20
20
 
21
21
  def post_global_suppressed_emails(recipient_emails, &block)
22
22
  params = { recipient_emails: recipient_emails }
23
- resp = post(
24
- @auth,
25
- SendGrid4r::REST::Asm::GlobalSuppressions.url,
26
- params,
27
- &block
28
- )
23
+ endpoint = SendGrid4r::REST::Asm::GlobalSuppressions.url
24
+ resp = post(@auth, endpoint, params, &block)
29
25
  SendGrid4r::REST::Asm.create_recipient_emails(resp)
30
26
  end
31
27
 
32
28
  def get_global_suppressed_email(email_address, &block)
33
- resp = get(
34
- @auth,
35
- SendGrid4r::REST::Asm::GlobalSuppressions.url(email_address),
36
- &block
37
- )
29
+ endpoint =
30
+ SendGrid4r::REST::Asm::GlobalSuppressions.url(email_address)
31
+ resp = get(@auth, endpoint, &block)
38
32
  SendGrid4r::REST::Asm.create_recipient_email(resp)
39
33
  end
40
34
 
41
35
  def delete_global_suppressed_email(email_address, &block)
42
- delete(
43
- @auth,
44
- SendGrid4r::REST::Asm::GlobalSuppressions.url(email_address),
45
- &block)
36
+ endpoint =
37
+ SendGrid4r::REST::Asm::GlobalSuppressions.url(email_address)
38
+ delete(@auth, endpoint, &block)
46
39
  end
47
40
  end
48
41
  end
@@ -16,7 +16,7 @@ module SendGrid4r
16
16
  :id, :name, :description, :last_email_sent_at, :unsubscribes)
17
17
 
18
18
  def self.url(group_id = nil)
19
- url = "#{SendGrid4r::Client::BASE_URL}/asm/groups"
19
+ url = "#{BASE_URL}/asm/groups"
20
20
  url = "#{url}/#{group_id}" unless group_id.nil?
21
21
  url
22
22
  end
@@ -58,12 +58,8 @@ module SendGrid4r
58
58
  end
59
59
 
60
60
  def patch_group(group_id, group, &block)
61
- resp = patch(
62
- @auth,
63
- SendGrid4r::REST::Asm::Groups.url(group_id),
64
- group.to_h,
65
- &block
66
- )
61
+ endpoint = SendGrid4r::REST::Asm::Groups.url(group_id)
62
+ resp = patch(@auth, endpoint, group.to_h, &block)
67
63
  SendGrid4r::REST::Asm::Groups.create_group(resp)
68
64
  end
69
65
 
@@ -16,15 +16,13 @@ module SendGrid4r
16
16
  Suppressions = Struct.new(:suppressions)
17
17
 
18
18
  def self.url(group_id, email_address = nil)
19
- url =
20
- "#{SendGrid4r::Client::BASE_URL}"\
21
- "/asm/groups/#{group_id}/suppressions"
19
+ url = "#{BASE_URL}/asm/groups/#{group_id}/suppressions"
22
20
  url = "#{url}/#{email_address}" unless email_address.nil?
23
21
  url
24
22
  end
25
23
 
26
24
  def self.create_suppressions(resp)
27
- resp if resp.nil?
25
+ return resp if resp.nil?
28
26
  suppressions = []
29
27
  resp['suppressions'].each do |suppression|
30
28
  suppressions.push(
@@ -37,39 +35,48 @@ module SendGrid4r
37
35
  end
38
36
 
39
37
  def self.create_suppression(resp)
40
- resp if resp.nil?
38
+ return resp if resp.nil?
41
39
  Suppression.new(
42
40
  resp['id'], resp['name'], resp['description'], resp['suppressed']
43
41
  )
44
42
  end
45
43
 
46
- def post_suppressed_emails(group_id, recipient_emails)
44
+ def self.create_emails(resp)
45
+ return resp if resp.nil?
46
+ emails = []
47
+ resp.each do |email|
48
+ emails.push(email)
49
+ end
50
+ emails
51
+ end
52
+
53
+ def post_suppressed_emails(group_id, recipient_emails, &block)
47
54
  resp = post(
48
55
  @auth,
49
56
  SendGrid4r::REST::Asm::Suppressions.url(group_id),
50
- recipient_emails: recipient_emails
57
+ recipient_emails: recipient_emails,
58
+ &block
51
59
  )
52
60
  SendGrid4r::REST::Asm.create_recipient_emails(resp)
53
61
  end
54
62
 
55
- def get_suppressed_emails(group_id)
56
- get(
57
- @auth,
58
- SendGrid4r::REST::Asm::Suppressions.url(group_id)
59
- )
63
+ def get_suppressed_emails(group_id, &block)
64
+ endpoint = SendGrid4r::REST::Asm::Suppressions.url(group_id)
65
+ resp = get(@auth, endpoint, &block)
66
+ SendGrid4r::REST::Asm::Suppressions.create_emails(resp)
60
67
  end
61
68
 
62
- def get_suppressions(email_address)
63
- resp = get(
64
- @auth,
65
- "#{SendGrid4r::Client::BASE_URL}/asm/suppressions/#{email_address}")
69
+ def get_suppressions(email_address, &block)
70
+ endpoint = "#{BASE_URL}/asm/suppressions/#{email_address}"
71
+ resp = get(@auth, endpoint, &block)
66
72
  SendGrid4r::REST::Asm::Suppressions.create_suppressions(resp)
67
73
  end
68
74
 
69
- def delete_suppressed_email(group_id, email_address)
75
+ def delete_suppressed_email(group_id, email_address, &block)
70
76
  delete(
71
77
  @auth,
72
- SendGrid4r::REST::Asm::Suppressions.url(group_id, email_address)
78
+ SendGrid4r::REST::Asm::Suppressions.url(group_id, email_address),
79
+ &block
73
80
  )
74
81
  end
75
82
  end
@@ -37,9 +37,7 @@ module SendGrid4r
37
37
  params['category'] = category unless category.nil?
38
38
  params['limit'] = limit unless limit.nil?
39
39
  params['offset'] = offset unless limit.nil?
40
- resp = get(
41
- @auth, "#{SendGrid4r::Client::BASE_URL}/categories", params, &block
42
- )
40
+ resp = get(@auth, "#{BASE_URL}/categories", params, &block)
43
41
  SendGrid4r::REST::Categories::Categories.create_categories(resp)
44
42
  end
45
43
  end
@@ -25,7 +25,7 @@ module SendGrid4r
25
25
  Fields = Struct.new(:custom_fields)
26
26
 
27
27
  def self.url(custom_field_id = nil)
28
- url = "#{SendGrid4r::Client::BASE_URL}/contactdb/custom_fields"
28
+ url = "#{BASE_URL}/contactdb/custom_fields"
29
29
  url = "#{url}/#{custom_field_id}" unless custom_field_id.nil?
30
30
  url
31
31
  end
@@ -16,7 +16,7 @@ module SendGrid4r
16
16
  Lists = Struct.new(:lists)
17
17
 
18
18
  def self.url(list_id = nil)
19
- url = "#{SendGrid4r::Client::BASE_URL}/contactdb/lists"
19
+ url = "#{BASE_URL}/contactdb/lists"
20
20
  url = "#{url}/#{list_id}" unless list_id.nil?
21
21
  url
22
22
  end
@@ -65,12 +65,8 @@ module SendGrid4r
65
65
  def patch_list(list_id, name, &block)
66
66
  params = {}
67
67
  params['name'] = name
68
- resp = patch(
69
- @auth,
70
- SendGrid4r::REST::Contacts::Lists.url(list_id),
71
- params,
72
- &block
73
- )
68
+ endpoint = SendGrid4r::REST::Contacts::Lists.url(list_id)
69
+ resp = patch(@auth, endpoint, params, &block)
74
70
  SendGrid4r::REST::Contacts::Lists.create_list(resp)
75
71
  end
76
72
 
@@ -81,54 +77,36 @@ module SendGrid4r
81
77
  # no bodies returned
82
78
  def post_recipients_to_list(list_id, recipients, &block)
83
79
  url = SendGrid4r::REST::Contacts::Lists.url(list_id)
84
- post(
85
- @auth,
86
- "#{url}/recipients_batch",
87
- recipients,
88
- &block
89
- )
80
+ endpoint = "#{url}/recipients_batch"
81
+ post(@auth, endpoint, recipients, &block)
90
82
  end
91
83
 
92
84
  def get_recipients_from_list(list_id, limit = nil, offset = nil, &block)
93
85
  params = {}
94
86
  params['limit'] = limit unless limit.nil?
95
87
  params['offset'] = offset unless offset.nil?
96
- resp = get(
97
- @auth,
98
- SendGrid4r::REST::Contacts::Lists.recipients_url(list_id),
99
- params,
100
- &block
101
- )
88
+ endpoint = SendGrid4r::REST::Contacts::Lists.recipients_url(list_id)
89
+ resp = get(@auth, endpoint, params, &block)
102
90
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
103
91
  end
104
92
 
105
93
  def post_recipient_to_list(list_id, recipient_id, &block)
106
- post(
107
- @auth,
108
- SendGrid4r::REST::Contacts::Lists.recipients_url(
109
- list_id, recipient_id
110
- ),
111
- &block
94
+ endpoint = SendGrid4r::REST::Contacts::Lists.recipients_url(
95
+ list_id, recipient_id
112
96
  )
97
+ post(@auth, endpoint, &block)
113
98
  end
114
99
 
115
100
  def delete_recipient_from_list(list_id, recipient_id, &block)
116
- delete(
117
- @auth,
118
- SendGrid4r::REST::Contacts::Lists.recipients_url(
119
- list_id, recipient_id
120
- ),
121
- &block
101
+ endpoint = SendGrid4r::REST::Contacts::Lists.recipients_url(
102
+ list_id, recipient_id
122
103
  )
104
+ delete(@auth, endpoint, &block)
123
105
  end
124
106
 
125
107
  def delete_lists(list_ids, &block)
126
- delete(
127
- @auth,
128
- "#{SendGrid4r::Client::BASE_URL}/contactdb/lists_batch",
129
- list_ids,
130
- &block
131
- )
108
+ endpoint = "#{BASE_URL}/contactdb/lists_batch"
109
+ delete(@auth, endpoint, list_ids, &block)
132
110
  end
133
111
  end
134
112
  end
@@ -61,79 +61,58 @@ module SendGrid4r
61
61
  end
62
62
 
63
63
  def self.url(recipient_id = nil)
64
- url = "#{SendGrid4r::Client::BASE_URL}/contactdb/recipients"
64
+ url = "#{BASE_URL}/contactdb/recipients"
65
65
  url = "#{url}/#{recipient_id}" unless recipient_id.nil?
66
66
  url
67
67
  end
68
68
 
69
69
  def post_recipient(params, &block)
70
- resp = post(
71
- @auth, SendGrid4r::REST::Contacts::Recipients.url, params, &block
72
- )
70
+ endpoint = SendGrid4r::REST::Contacts::Recipients.url
71
+ resp = post(@auth, endpoint, params, &block)
73
72
  SendGrid4r::REST::Contacts::Recipients.create_recipient(resp)
74
73
  end
75
74
 
76
75
  def delete_recipients(emails, &block)
77
- delete(
78
- @auth, SendGrid4r::REST::Contacts::Recipients.url, emails, &block
79
- )
76
+ endpoint = SendGrid4r::REST::Contacts::Recipients.url
77
+ delete(@auth, endpoint, emails, &block)
80
78
  end
81
79
 
82
80
  def get_recipients(limit = nil, offset = nil, &block)
83
81
  params = {}
84
82
  params['limit'] = limit unless limit.nil?
85
83
  params['offset'] = offset unless offset.nil?
86
- resp = get(
87
- @auth, SendGrid4r::REST::Contacts::Recipients.url, params, &block
88
- )
84
+ endpoint = SendGrid4r::REST::Contacts::Recipients.url
85
+ resp = get(@auth, endpoint, params, &block)
89
86
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
90
87
  end
91
88
 
92
89
  def get_recipients_by_id(recipient_ids, &block)
93
- resp = get(
94
- @auth,
95
- "#{SendGrid4r::REST::Contacts::Recipients.url}/batch",
96
- nil,
97
- recipient_ids,
98
- &block
99
- )
90
+ endpoint = "#{SendGrid4r::REST::Contacts::Recipients.url}/batch"
91
+ resp = get(@auth, endpoint, nil, recipient_ids, &block)
100
92
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
101
93
  end
102
94
 
103
95
  def get_recipients_count(&block)
104
- resp = get(
105
- @auth,
106
- "#{SendGrid4r::REST::Contacts::Recipients.url}/count",
107
- &block
108
- )
96
+ endpoint = "#{SendGrid4r::REST::Contacts::Recipients.url}/count"
97
+ resp = get(@auth, endpoint, &block)
109
98
  resp['recipient_count'] unless resp.nil?
110
99
  end
111
100
 
112
101
  def search_recipients(params, &block)
113
- resp = get(
114
- @auth,
115
- "#{SendGrid4r::REST::Contacts::Recipients.url}/search",
116
- params,
117
- &block
118
- )
102
+ endpoint = "#{SendGrid4r::REST::Contacts::Recipients.url}/search"
103
+ resp = get(@auth, endpoint, params, &block)
119
104
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
120
105
  end
121
106
 
122
107
  def get_recipient(recipient_id, &block)
123
- resp = get(
124
- @auth,
125
- SendGrid4r::REST::Contacts::Recipients.url(recipient_id),
126
- &block
127
- )
108
+ endpoint = SendGrid4r::REST::Contacts::Recipients.url(recipient_id)
109
+ resp = get(@auth, endpoint, &block)
128
110
  SendGrid4r::REST::Contacts::Recipients.create_recipient(resp)
129
111
  end
130
112
 
131
113
  def delete_recipient(recipient_id, &block)
132
- delete(
133
- @auth,
134
- SendGrid4r::REST::Contacts::Recipients.url(recipient_id),
135
- &block
136
- )
114
+ endpoint = SendGrid4r::REST::Contacts::Recipients.url(recipient_id)
115
+ delete(@auth, endpoint, &block)
137
116
  end
138
117
 
139
118
  def get_lists_recipient_belong(recipient_id, &block)
@@ -146,12 +125,8 @@ module SendGrid4r
146
125
  end
147
126
 
148
127
  def post_recipients(recipients, &block)
149
- resp = post(
150
- @auth,
151
- "#{SendGrid4r::Client::BASE_URL}/contactdb/recipients_batch",
152
- recipients,
153
- &block
154
- )
128
+ endpoint = "#{BASE_URL}/contactdb/recipients_batch"
129
+ resp = post(@auth, endpoint, recipients, &block)
155
130
  SendGrid4r::REST::Contacts::Recipients.create_result(resp)
156
131
  end
157
132
 
@@ -41,11 +41,7 @@ module SendGrid4r
41
41
  end
42
42
 
43
43
  def get_reserved_fields(&block)
44
- resp = get(
45
- @auth,
46
- "#{SendGrid4r::Client::BASE_URL}/contactdb/reserved_fields",
47
- &block
48
- )
44
+ resp = get(@auth, "#{BASE_URL}/contactdb/reserved_fields", &block)
49
45
  SendGrid4r::REST::Contacts::ReservedFields.create_fields(resp)
50
46
  end
51
47
  end
@@ -21,7 +21,7 @@ module SendGrid4r
21
21
  Segments = Struct.new(:segments)
22
22
 
23
23
  def self.url(segment_id = nil)
24
- url = "#{SendGrid4r::Client::BASE_URL}/contactdb/segments"
24
+ url = "#{BASE_URL}/contactdb/segments"
25
25
  url = "#{url}/#{segment_id}" unless segment_id.nil?
26
26
  url
27
27
  end
@@ -62,9 +62,8 @@ module SendGrid4r
62
62
  end
63
63
 
64
64
  def post_segment(params, &block)
65
- resp = post(
66
- @auth, SendGrid4r::REST::Contacts::Segments.url, params.to_h, &block
67
- )
65
+ endpoint = SendGrid4r::REST::Contacts::Segments.url
66
+ resp = post(@auth, endpoint, params.to_h, &block)
68
67
  SendGrid4r::REST::Contacts::Segments.create_segment(resp)
69
68
  end
70
69
 
@@ -74,26 +73,20 @@ module SendGrid4r
74
73
  end
75
74
 
76
75
  def get_segment(segment_id, &block)
77
- resp = get(
78
- @auth, SendGrid4r::REST::Contacts::Segments.url(segment_id), &block
79
- )
76
+ endpoint = SendGrid4r::REST::Contacts::Segments.url(segment_id)
77
+ resp = get(@auth, endpoint, &block)
80
78
  SendGrid4r::REST::Contacts::Segments.create_segment(resp)
81
79
  end
82
80
 
83
81
  def put_segment(segment_id, params, &block)
84
- resp = put(
85
- @auth,
86
- SendGrid4r::REST::Contacts::Segments.url(segment_id),
87
- params,
88
- &block
89
- )
82
+ endpoint = SendGrid4r::REST::Contacts::Segments.url(segment_id)
83
+ resp = put(@auth, endpoint, params, &block)
90
84
  SendGrid4r::REST::Contacts::Segments.create_segment(resp)
91
85
  end
92
86
 
93
87
  def delete_segment(segment_id, &block)
94
- delete(
95
- @auth, SendGrid4r::REST::Contacts::Segments.url(segment_id), &block
96
- )
88
+ endpoint = SendGrid4r::REST::Contacts::Segments.url(segment_id)
89
+ delete(@auth, endpoint, &block)
97
90
  end
98
91
 
99
92
  def get_recipients_from_segment(
@@ -0,0 +1,84 @@
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
+ #
9
+ # SendGrid Web API v3 EmailActivity
10
+ #
11
+ module EmailActivity
12
+ include SendGrid4r::REST::Request
13
+
14
+ #
15
+ # SendGrid Web API v3 Stats - AggregatedBy
16
+ #
17
+ module Event
18
+ BOUNCES = 'bounces'
19
+ CLICKS = 'clicks'
20
+ DEFERRED = 'deferred'
21
+ DELIVERED = 'delivered'
22
+ DROPS = 'drops'
23
+ GROUP_UNSUBSCRIBE = 'group_unsubscribe'
24
+ GROUP_RESUBSCRIBE = 'group_resubscribe'
25
+ OPENS = 'opens'
26
+ PROCESSED = 'processed'
27
+ PARSEAPI = 'parseapi'
28
+ SPAM_REPORTS = 'spam_reports'
29
+ UNSUBSCRIBE = 'unsubscribes'
30
+ end
31
+
32
+ Activity = Struct.new(
33
+ :email, :event, :created, :category, :smtp_id, :asm_group_id,
34
+ :msg_id, :ip, :url, :reason
35
+ )
36
+
37
+ def self.url
38
+ url = "#{BASE_URL}/email_activity"
39
+ url
40
+ end
41
+
42
+ def self.create_activities(resp)
43
+ return resp if resp.nil?
44
+ activities = []
45
+ resp.each do |activity|
46
+ activities.push(
47
+ SendGrid4r::REST::EmailActivity.create_activity(activity)
48
+ )
49
+ end
50
+ activities
51
+ end
52
+
53
+ def self.create_activity(resp)
54
+ return resp if resp.nil?
55
+ Activity.new(
56
+ resp['email'],
57
+ resp['event'],
58
+ resp['created'].nil? ? nil : Time.at(resp['created']),
59
+ resp['category'],
60
+ resp['smtp_id'],
61
+ resp['asm_group_id'],
62
+ resp['msg_id'],
63
+ resp['ip'],
64
+ resp['url'],
65
+ resp['reason']
66
+ )
67
+ end
68
+
69
+ def get_email_activities(
70
+ email: nil, events: nil, exclude_events: nil, start_time: nil,
71
+ end_time: nil, &block
72
+ )
73
+ params = {}
74
+ params['email'] = email unless email.nil?
75
+ params['events'] = events unless events.nil?
76
+ params['exclude_events'] = exclude_events unless exclude_events.nil?
77
+ params['start_time'] = start_time.to_i unless start_time.nil?
78
+ params['end_time'] = end_time.to_i unless end_time.nil?
79
+ resp = get(@auth, SendGrid4r::REST::EmailActivity.url, params, &block)
80
+ SendGrid4r::REST::EmailActivity.create_activities(resp)
81
+ end
82
+ end
83
+ end
84
+ end