sendgrid4r 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +5 -0
  3. data/.rubocop.yml +8 -8
  4. data/README.md +2 -0
  5. data/lib/auth.rb +5 -2
  6. data/lib/client.rb +4 -2
  7. data/lib/sendgrid4r/factory/version_factory.rb +1 -1
  8. data/lib/sendgrid4r/rest/api.rb +4 -0
  9. data/lib/sendgrid4r/rest/api_keys/api_keys.rb +73 -0
  10. data/lib/sendgrid4r/rest/asm/asm.rb +28 -0
  11. data/lib/sendgrid4r/rest/asm/global_suppressions.rb +12 -8
  12. data/lib/sendgrid4r/rest/asm/groups.rb +29 -22
  13. data/lib/sendgrid4r/rest/asm/suppressions.rb +25 -15
  14. data/lib/sendgrid4r/rest/categories/categories.rb +19 -9
  15. data/lib/sendgrid4r/rest/contacts/custom_fields.rb +14 -8
  16. data/lib/sendgrid4r/rest/contacts/lists.rb +32 -20
  17. data/lib/sendgrid4r/rest/contacts/recipients.rb +42 -31
  18. data/lib/sendgrid4r/rest/contacts/reserved_fields.rb +6 -2
  19. data/lib/sendgrid4r/rest/contacts/segments.rb +22 -12
  20. data/lib/sendgrid4r/rest/ips/addresses.rb +36 -22
  21. data/lib/sendgrid4r/rest/ips/pools.rb +31 -16
  22. data/lib/sendgrid4r/rest/ips/warmup.rb +34 -15
  23. data/lib/sendgrid4r/rest/request.rb +33 -19
  24. data/lib/sendgrid4r/rest/settings/enforced_tls.rb +12 -5
  25. data/lib/sendgrid4r/rest/stats/advanced.rb +73 -25
  26. data/lib/sendgrid4r/rest/stats/category.rb +11 -6
  27. data/lib/sendgrid4r/rest/stats/global.rb +6 -4
  28. data/lib/sendgrid4r/rest/stats/parse.rb +10 -4
  29. data/lib/sendgrid4r/rest/stats/stats.rb +13 -18
  30. data/lib/sendgrid4r/rest/stats/subuser.rb +10 -6
  31. data/lib/sendgrid4r/rest/templates/templates.rb +23 -16
  32. data/lib/sendgrid4r/rest/templates/versions.rb +39 -36
  33. data/lib/sendgrid4r/version.rb +1 -1
  34. data/spec/api_keys/api_keys_spec.rb +152 -0
  35. data/spec/asm/asm_spec.rb +33 -0
  36. data/spec/asm/global_suppressions_spec.rb +111 -45
  37. data/spec/asm/groups_spec.rb +172 -48
  38. data/spec/asm/suppressions_spec.rb +180 -54
  39. data/spec/categories/categories_spec.rb +81 -25
  40. data/spec/client_spec.rb +11 -4
  41. data/spec/contacts/custom_fields_spec.rb +135 -44
  42. data/spec/contacts/lists_spec.rb +314 -84
  43. data/spec/contacts/recipients_spec.rb +337 -92
  44. data/spec/contacts/reserved_fields_spec.rb +80 -60
  45. data/spec/contacts/segments_spec.rb +219 -88
  46. data/spec/factory/condition_factory_spec.rb +12 -12
  47. data/spec/factory/segment_factory_spec.rb +19 -19
  48. data/spec/factory/version_factory_spec.rb +6 -6
  49. data/spec/ips/addresses_spec.rb +177 -84
  50. data/spec/ips/pools_spec.rb +190 -34
  51. data/spec/ips/warmup_spec.rb +106 -38
  52. data/spec/settings/enforced_tls_spec.rb +76 -18
  53. data/spec/stats/advanced_spec.rb +373 -196
  54. data/spec/stats/category_spec.rb +133 -71
  55. data/spec/stats/global_spec.rb +74 -47
  56. data/spec/stats/parse_spec.rb +46 -29
  57. data/spec/stats/stats_spec.rb +246 -0
  58. data/spec/stats/subuser_spec.rb +99 -54
  59. data/spec/templates/templates_spec.rb +219 -54
  60. data/spec/templates/versions_spec.rb +171 -67
  61. metadata +10 -2
@@ -28,6 +28,7 @@ module SendGrid4r
28
28
  Recipients = Struct.new(:recipients)
29
29
 
30
30
  def self.create_recipient(resp)
31
+ return resp if resp.nil?
31
32
  custom_fields = []
32
33
  resp['custom_fields'].each do |field|
33
34
  custom_fields.push(
@@ -35,7 +36,7 @@ module SendGrid4r
35
36
  )
36
37
  end
37
38
  Recipient.new(
38
- resp['created_at'],
39
+ Time.at(resp['created_at']),
39
40
  custom_fields,
40
41
  resp['email'],
41
42
  resp['first_name'],
@@ -44,11 +45,12 @@ module SendGrid4r
44
45
  resp['last_emailed'],
45
46
  resp['last_name'],
46
47
  resp['last_opend'],
47
- resp['updated_at']
48
+ Time.at(resp['updated_at'])
48
49
  )
49
50
  end
50
51
 
51
52
  def self.create_recipients(resp)
53
+ return resp if resp.nil?
52
54
  recipients = []
53
55
  resp['recipients'].each do |recipient|
54
56
  recipients.push(
@@ -64,83 +66,91 @@ module SendGrid4r
64
66
  url
65
67
  end
66
68
 
67
- def post_recipient(params)
68
- resp = post(@auth, SendGrid4r::REST::Contacts::Recipients.url, params)
69
+ def post_recipient(params, &block)
70
+ resp = post(
71
+ @auth, SendGrid4r::REST::Contacts::Recipients.url, params, &block
72
+ )
69
73
  SendGrid4r::REST::Contacts::Recipients.create_recipient(resp)
70
74
  end
71
75
 
72
- def delete_recipients(emails)
73
- delete(@auth, SendGrid4r::REST::Contacts::Recipients.url, emails)
76
+ def delete_recipients(emails, &block)
77
+ delete(
78
+ @auth, SendGrid4r::REST::Contacts::Recipients.url, emails, &block
79
+ )
74
80
  end
75
81
 
76
- def get_recipients(limit = nil, offset = nil)
82
+ def get_recipients(limit = nil, offset = nil, &block)
77
83
  params = {}
78
84
  params['limit'] = limit unless limit.nil?
79
85
  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
86
+ resp = get(
87
+ @auth, SendGrid4r::REST::Contacts::Recipients.url, params, &block
88
+ )
89
89
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
90
90
  end
91
91
 
92
- def get_recipients_by_id(recipient_ids)
92
+ def get_recipients_by_id(recipient_ids, &block)
93
93
  resp = get(
94
94
  @auth,
95
95
  "#{SendGrid4r::REST::Contacts::Recipients.url}/batch",
96
96
  nil,
97
- recipient_ids
97
+ recipient_ids,
98
+ &block
98
99
  )
99
100
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
100
101
  end
101
102
 
102
- def get_recipients_count
103
+ def get_recipients_count(&block)
103
104
  resp = get(
104
- @auth, "#{SendGrid4r::REST::Contacts::Recipients.url}/count")
105
- resp['recipient_count']
105
+ @auth,
106
+ "#{SendGrid4r::REST::Contacts::Recipients.url}/count",
107
+ &block
108
+ )
109
+ resp['recipient_count'] unless resp.nil?
106
110
  end
107
111
 
108
- def search_recipients(params)
112
+ def search_recipients(params, &block)
109
113
  resp = get(
110
114
  @auth,
111
115
  "#{SendGrid4r::REST::Contacts::Recipients.url}/search",
112
- params
116
+ params,
117
+ &block
113
118
  )
114
119
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
115
120
  end
116
121
 
117
- def get_recipient(recipient_id)
122
+ def get_recipient(recipient_id, &block)
118
123
  resp = get(
119
124
  @auth,
120
- SendGrid4r::REST::Contacts::Recipients.url(recipient_id)
125
+ SendGrid4r::REST::Contacts::Recipients.url(recipient_id),
126
+ &block
121
127
  )
122
128
  SendGrid4r::REST::Contacts::Recipients.create_recipient(resp)
123
129
  end
124
130
 
125
- def delete_recipient(recipient_id)
131
+ def delete_recipient(recipient_id, &block)
126
132
  delete(
127
- @auth, SendGrid4r::REST::Contacts::Recipients.url(recipient_id)
133
+ @auth,
134
+ SendGrid4r::REST::Contacts::Recipients.url(recipient_id),
135
+ &block
128
136
  )
129
137
  end
130
138
 
131
- def get_lists_recipient_belong(recipient_id)
139
+ def get_lists_recipient_belong(recipient_id, &block)
132
140
  resp = get(
133
141
  @auth,
134
- "#{SendGrid4r::REST::Contacts::Recipients.url(recipient_id)}/lists"
142
+ "#{SendGrid4r::REST::Contacts::Recipients.url(recipient_id)}/lists",
143
+ &block
135
144
  )
136
145
  SendGrid4r::REST::Contacts::Lists.create_lists(resp)
137
146
  end
138
147
 
139
- def post_recipients(recipients)
148
+ def post_recipients(recipients, &block)
140
149
  resp = post(
141
150
  @auth,
142
151
  "#{SendGrid4r::Client::BASE_URL}/contactdb/recipients_batch",
143
- recipients
152
+ recipients,
153
+ &block
144
154
  )
145
155
  SendGrid4r::REST::Contacts::Recipients.create_result(resp)
146
156
  end
@@ -154,6 +164,7 @@ module SendGrid4r
154
164
  )
155
165
 
156
166
  def self.create_result(resp)
167
+ return resp if resp.nil?
157
168
  error_indices = []
158
169
  resp['error_indices'].each do |index|
159
170
  error_indices.push(index)
@@ -25,6 +25,7 @@ module SendGrid4r
25
25
  Fields = Struct.new(:reserved_fields)
26
26
 
27
27
  def self.create_fields(resp)
28
+ return resp if resp.nil?
28
29
  reserved_fields = []
29
30
  resp['reserved_fields'].each do |field|
30
31
  reserved_fields.push(
@@ -35,12 +36,15 @@ module SendGrid4r
35
36
  end
36
37
 
37
38
  def self.create_field(resp)
39
+ return resp if resp.nil?
38
40
  Field.new(resp['name'], resp['type'])
39
41
  end
40
42
 
41
- def get_reserved_fields
43
+ def get_reserved_fields(&block)
42
44
  resp = get(
43
- @auth, "#{SendGrid4r::Client::BASE_URL}/contactdb/reserved_fields"
45
+ @auth,
46
+ "#{SendGrid4r::Client::BASE_URL}/contactdb/reserved_fields",
47
+ &block
44
48
  )
45
49
  SendGrid4r::REST::Contacts::ReservedFields.create_fields(resp)
46
50
  end
@@ -27,12 +27,14 @@ module SendGrid4r
27
27
  end
28
28
 
29
29
  def self.create_condition(resp)
30
+ return resp if resp.nil?
30
31
  Condition.new(
31
32
  resp['field'], resp['value'], resp['operator'], resp['and_or']
32
33
  )
33
34
  end
34
35
 
35
36
  def self.create_segment(resp)
37
+ return resp if resp.nil?
36
38
  conditions = []
37
39
  resp['conditions'].each do |condition|
38
40
  conditions.push(
@@ -49,6 +51,7 @@ module SendGrid4r
49
51
  end
50
52
 
51
53
  def self.create_segments(resp)
54
+ return resp if resp.nil?
52
55
  segments = []
53
56
  resp['segments'].each do |segment|
54
57
  segments.push(
@@ -58,42 +61,49 @@ module SendGrid4r
58
61
  Segments.new(segments)
59
62
  end
60
63
 
61
- def post_segment(params)
64
+ def post_segment(params, &block)
62
65
  resp = post(
63
- @auth, SendGrid4r::REST::Contacts::Segments.url, params.to_h
66
+ @auth, SendGrid4r::REST::Contacts::Segments.url, params.to_h, &block
64
67
  )
65
68
  SendGrid4r::REST::Contacts::Segments.create_segment(resp)
66
69
  end
67
70
 
68
- def get_segments
69
- resp = get(@auth, SendGrid4r::REST::Contacts::Segments.url)
71
+ def get_segments(&block)
72
+ resp = get(@auth, SendGrid4r::REST::Contacts::Segments.url, &block)
70
73
  SendGrid4r::REST::Contacts::Segments.create_segments(resp)
71
74
  end
72
75
 
73
- def get_segment(segment_id)
76
+ def get_segment(segment_id, &block)
74
77
  resp = get(
75
- @auth, SendGrid4r::REST::Contacts::Segments.url(segment_id)
78
+ @auth, SendGrid4r::REST::Contacts::Segments.url(segment_id), &block
76
79
  )
77
80
  SendGrid4r::REST::Contacts::Segments.create_segment(resp)
78
81
  end
79
82
 
80
- def put_segment(segment_id, params)
83
+ def put_segment(segment_id, params, &block)
81
84
  resp = put(
82
- @auth, SendGrid4r::REST::Contacts::Segments.url(segment_id), params
85
+ @auth,
86
+ SendGrid4r::REST::Contacts::Segments.url(segment_id),
87
+ params,
88
+ &block
83
89
  )
84
90
  SendGrid4r::REST::Contacts::Segments.create_segment(resp)
85
91
  end
86
92
 
87
- def delete_segment(segment_id)
88
- delete(@auth, SendGrid4r::REST::Contacts::Segments.url(segment_id))
93
+ def delete_segment(segment_id, &block)
94
+ delete(
95
+ @auth, SendGrid4r::REST::Contacts::Segments.url(segment_id), &block
96
+ )
89
97
  end
90
98
 
91
- def get_recipients_from_segment(segment_id, limit = nil, offset = nil)
99
+ def get_recipients_from_segment(
100
+ segment_id, limit = nil, offset = nil, &block
101
+ )
92
102
  params = {}
93
103
  params['limit'] = limit unless limit.nil?
94
104
  params['offset'] = offset unless offset.nil?
95
105
  url = SendGrid4r::REST::Contacts::Segments.url(segment_id)
96
- resp = get(@auth, "#{url}/recipients", params)
106
+ resp = get(@auth, "#{url}/recipients", params, &block)
97
107
  SendGrid4r::REST::Contacts::Recipients.create_recipients(resp)
98
108
  end
99
109
  end
@@ -18,54 +18,68 @@ module SendGrid4r
18
18
  Address = Struct.new(
19
19
  :ip, :pools, :warmup, :start_date, :subusers, :rdns, :pool_name)
20
20
 
21
+ def self.create_addresses(resp)
22
+ return resp if resp.nil?
23
+ ips = []
24
+ resp.each do |address|
25
+ ips.push(SendGrid4r::REST::Ips::Addresses.create_address(address))
26
+ end
27
+ ips
28
+ end
29
+
21
30
  def self.create_address(resp)
31
+ return resp if resp.nil?
22
32
  Address.new(
23
33
  resp['ip'],
24
34
  resp['pools'],
25
35
  resp['warmup'],
26
- resp['start_date'],
36
+ resp['start_date'].nil? ? nil : Time.at(resp['start_date']),
27
37
  resp['subusers'],
28
38
  resp['rdns'],
29
39
  resp['pool_name']
30
40
  )
31
41
  end
32
42
 
33
- def post_ip_to_pool(pool_name, ip)
43
+ def self.url(ip = nil)
44
+ url = "#{SendGrid4r::Client::BASE_URL}/ips"
45
+ url = "#{url}/#{ip}" unless ip.nil?
46
+ url
47
+ end
48
+
49
+ def post_ip_to_pool(pool_name, ip, &block)
34
50
  resp = post(
35
51
  @auth,
36
- "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{pool_name}/ips",
37
- ip: ip
52
+ SendGrid4r::REST::Ips::Pools.url(pool_name, 'ips'),
53
+ ip: ip,
54
+ &block
38
55
  )
39
56
  SendGrid4r::REST::Ips::Addresses.create_address(resp)
40
57
  end
41
58
 
42
- def get_ips
43
- resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips")
44
- ips = []
45
- resp_a.each do |resp|
46
- ips.push(SendGrid4r::REST::Ips::Addresses.create_address(resp))
47
- end
48
- ips
59
+ def get_ips(&block)
60
+ resp = get(@auth, SendGrid4r::REST::Ips::Addresses.url, &block)
61
+ SendGrid4r::REST::Ips::Addresses.create_addresses(resp)
49
62
  end
50
63
 
51
- def get_ips_assigned
52
- resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/assigned")
53
- ips = []
54
- resp_a.each do |resp|
55
- ips.push(SendGrid4r::REST::Ips::Addresses.create_address(resp))
56
- end
57
- ips
64
+ def get_ips_assigned(&block)
65
+ resp = get(
66
+ @auth, SendGrid4r::REST::Ips::Addresses.url('assigned'), &block
67
+ )
68
+ SendGrid4r::REST::Ips::Addresses.create_addresses(resp)
58
69
  end
59
70
 
60
- def get_ip(ip)
61
- resp = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/#{ip}")
71
+ def get_ip(ip, &block)
72
+ resp = get(
73
+ @auth, SendGrid4r::REST::Ips::Addresses.url(ip), &block
74
+ )
62
75
  SendGrid4r::REST::Ips::Addresses.create_address(resp)
63
76
  end
64
77
 
65
- def delete_ip_from_pool(pool_name, ip)
78
+ def delete_ip_from_pool(pool_name, ip, &block)
66
79
  delete(
67
80
  @auth,
68
- "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{pool_name}/ips/#{ip}"
81
+ SendGrid4r::REST::Ips::Pools.url(pool_name, 'ips', ip),
82
+ &block
69
83
  )
70
84
  end
71
85
  end
@@ -17,45 +17,60 @@ module SendGrid4r
17
17
 
18
18
  Pool = Struct.new(:pool_name, :name, :ips)
19
19
 
20
+ def self.create_pools(resp)
21
+ return resp if resp.nil?
22
+ pools = []
23
+ resp.each do |pool|
24
+ pools.push(SendGrid4r::REST::Ips::Pools.create_pool(pool))
25
+ end
26
+ pools
27
+ end
28
+
20
29
  def self.create_pool(resp)
30
+ return resp if resp.nil?
21
31
  ips = []
22
32
  Array(resp['ips']).each { |ip| ips.push(ip) }
23
33
  Pool.new(resp['pool_name'], resp['name'], ips)
24
34
  end
25
35
 
26
- def post_pool(name)
36
+ def self.url(name = nil, ips = nil, ip = nil)
37
+ url = "#{SendGrid4r::Client::BASE_URL}/ips/pools"
38
+ url = "#{url}/#{name}" unless name.nil?
39
+ url = "#{url}/#{ips}" unless ips.nil?
40
+ url = "#{url}/#{ip}" unless ip.nil?
41
+ url
42
+ end
43
+
44
+ def post_pool(name, &block)
27
45
  resp = post(
28
- @auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools", name: name
46
+ @auth, SendGrid4r::REST::Ips::Pools.url, name: name, &block
29
47
  )
30
48
  SendGrid4r::REST::Ips::Pools.create_pool(resp)
31
49
  end
32
50
 
33
- def get_pools
34
- resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools")
35
- pools = []
36
- resp_a.each do |resp|
37
- pools.push(SendGrid4r::REST::Ips::Pools.create_pool(resp))
38
- end
39
- pools
51
+ def get_pools(&block)
52
+ resp = get(@auth, SendGrid4r::REST::Ips::Pools.url, &block)
53
+ SendGrid4r::REST::Ips::Pools.create_pools(resp)
40
54
  end
41
55
 
42
- def get_pool(name)
56
+ def get_pool(name, &block)
43
57
  resp = get(
44
- @auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{name}"
58
+ @auth, SendGrid4r::REST::Ips::Pools.url(name), &block
45
59
  )
46
60
  SendGrid4r::REST::Ips::Pools.create_pool(resp)
47
61
  end
48
62
 
49
- def put_pool(name, new_name)
63
+ def put_pool(name, new_name, &block)
50
64
  resp = put(
51
65
  @auth,
52
- "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{name}",
53
- name: new_name)
66
+ SendGrid4r::REST::Ips::Pools.url(name),
67
+ name: new_name,
68
+ &block)
54
69
  SendGrid4r::REST::Ips::Pools.create_pool(resp)
55
70
  end
56
71
 
57
- def delete_pool(name)
58
- delete(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{name}")
72
+ def delete_pool(name, &block)
73
+ delete(@auth, SendGrid4r::REST::Ips::Pools.url(name), &block)
59
74
  end
60
75
  end
61
76
  end
@@ -11,42 +11,61 @@ module SendGrid4r
11
11
  #
12
12
  module Warmup
13
13
  include SendGrid4r::REST::Request
14
- WarmupIp = Struct.new(:ip, :start_date)
15
14
 
16
- def self.create_warmup_ip(resp)
17
- WarmupIp.new(resp['ip'], resp['start_date'])
18
- end
15
+ WarmupIp = Struct.new(:ip, :start_date)
19
16
 
20
- def get_warmup_ips
17
+ def self.create_warmup_ips(resp)
18
+ return resp if resp.nil?
21
19
  ips = []
22
- resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/warmup")
23
- resp_a.each do |resp|
24
- ips.push(SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp))
20
+ resp.each do |warmup_ip|
21
+ ips.push(SendGrid4r::REST::Ips::Warmup.create_warmup_ip(warmup_ip))
25
22
  end
26
23
  ips
27
24
  end
28
25
 
29
- def get_warmup_ip(ip_address)
26
+ def self.create_warmup_ip(resp)
27
+ return resp if resp.nil?
28
+ WarmupIp.new(
29
+ resp['ip'],
30
+ resp['start_date'].nil? ? nil : Time.at(resp['start_date'])
31
+ )
32
+ end
33
+
34
+ def self.url(ip_address = nil)
35
+ url = "#{SendGrid4r::Client::BASE_URL}/ips/warmup"
36
+ url = "#{url}/#{ip_address}" unless ip_address.nil?
37
+ url
38
+ end
39
+
40
+ def get_warmup_ips(&block)
41
+ resp = get(@auth, SendGrid4r::REST::Ips::Warmup.url, &block)
42
+ SendGrid4r::REST::Ips::Warmup.create_warmup_ips(resp)
43
+ end
44
+
45
+ def get_warmup_ip(ip_address, &block)
30
46
  resp = get(
31
47
  @auth,
32
- "#{SendGrid4r::Client::BASE_URL}/ips/warmup/#{ip_address}"
48
+ SendGrid4r::REST::Ips::Warmup.url(ip_address),
49
+ &block
33
50
  )
34
51
  SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp)
35
52
  end
36
53
 
37
- def post_warmup_ip(ip_address)
54
+ def post_warmup_ip(ip_address, &block)
38
55
  resp = post(
39
56
  @auth,
40
- "#{SendGrid4r::Client::BASE_URL}/ips/warmup",
41
- ip: ip_address
57
+ SendGrid4r::REST::Ips::Warmup.url,
58
+ ip: ip_address,
59
+ &block
42
60
  )
43
61
  SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp)
44
62
  end
45
63
 
46
- def delete_warmup_ip(ip_address)
64
+ def delete_warmup_ip(ip_address, &block)
47
65
  delete(
48
66
  @auth,
49
- "#{SendGrid4r::Client::BASE_URL}/ips/warmup/#{ip_address}"
67
+ SendGrid4r::REST::Ips::Warmup.url(ip_address),
68
+ &block
50
69
  )
51
70
  end
52
71
  end
@@ -11,35 +11,32 @@ module SendGrid4r
11
11
  # SendGrid Web API v3 Request
12
12
  #
13
13
  module Request
14
- # TODO: handle ratelimit headers
15
- def get(auth, endpoint, params = nil, payload = nil)
16
- execute(:get, auth, endpoint, params, payload)
14
+ def get(auth, endpoint, params = nil, payload = nil, &block)
15
+ execute(:get, auth, endpoint, params, payload, &block)
17
16
  end
18
17
 
19
- def post(auth, endpoint, payload = nil)
20
- execute(:post, auth, endpoint, nil, payload)
18
+ def post(auth, endpoint, payload = nil, &block)
19
+ execute(:post, auth, endpoint, nil, payload, &block)
21
20
  end
22
21
 
23
- def patch(auth, endpoint, payload)
24
- execute(:patch, auth, endpoint, nil, payload)
22
+ def patch(auth, endpoint, payload, &block)
23
+ execute(:patch, auth, endpoint, nil, payload, &block)
25
24
  end
26
25
 
27
- def put(auth, endpoint, payload)
28
- execute(:put, auth, endpoint, nil, payload)
26
+ def put(auth, endpoint, payload, &block)
27
+ execute(:put, auth, endpoint, nil, payload, &block)
29
28
  end
30
29
 
31
- def delete(auth, endpoint, payload = nil)
32
- execute(:delete, auth, endpoint, nil, payload)
30
+ def delete(auth, endpoint, payload = nil, &block)
31
+ execute(:delete, auth, endpoint, nil, payload, &block)
33
32
  end
34
33
 
35
- def execute(method, auth, endpoint, params, payload)
36
- args = {}
37
- args[:method] = method
38
- args[:url] = process_url_params(endpoint, params)
39
- args[:user] = auth.username
40
- args[:password] = auth.password
41
- args[:headers] = { content_type: :json }
42
- args[:payload] = payload.to_json unless payload.nil?
34
+ def execute(method, auth, endpoint, params, payload, &block)
35
+ args = create_args(method, auth, endpoint, params, payload)
36
+ if block_given?
37
+ RestClient::Request.execute(args, &block)
38
+ return nil
39
+ end
43
40
  body = RestClient::Request.execute(args)
44
41
  if body.nil? || body.length < 2
45
42
  body
@@ -48,6 +45,23 @@ module SendGrid4r
48
45
  end
49
46
  end
50
47
 
48
+ def create_args(method, auth, endpoint, params, payload)
49
+ args = {}
50
+ args[:method] = method
51
+ args[:url] = process_url_params(endpoint, params)
52
+ headers = {}
53
+ headers[:content_type] = :json
54
+ if !auth.api_key.nil?
55
+ headers[:authorization] = "Bearer #{auth.api_key}"
56
+ else
57
+ args[:user] = auth.username
58
+ args[:password] = auth.password
59
+ end
60
+ args[:headers] = headers
61
+ args[:payload] = payload.to_json unless payload.nil?
62
+ args
63
+ end
64
+
51
65
  def process_url_params(endpoint, params)
52
66
  if params.nil? || params.empty?
53
67
  endpoint
@@ -14,22 +14,29 @@ module SendGrid4r
14
14
  EnforcedTls = Struct.new(:require_tls, :require_valid_cert)
15
15
 
16
16
  def self.create_enforced_tls(resp)
17
+ return resp if resp.nil?
17
18
  EnforcedTls.new(resp['require_tls'], resp['require_valid_cert'])
18
19
  end
19
20
 
20
- def get_enforced_tls
21
+ def self.url
22
+ "#{SendGrid4r::Client::BASE_URL}/user/settings/enforced_tls"
23
+ end
24
+
25
+ def get_enforced_tls(&block)
21
26
  resp = get(
22
27
  @auth,
23
- "#{SendGrid4r::Client::BASE_URL}/user/settings/enforced_tls"
28
+ SendGrid4r::REST::Settings::EnforcedTls.url,
29
+ &block
24
30
  )
25
31
  SendGrid4r::REST::Settings::EnforcedTls.create_enforced_tls(resp)
26
32
  end
27
33
 
28
- def patch_enforced_tls(params)
34
+ def patch_enforced_tls(params, &block)
29
35
  resp = patch(
30
36
  @auth,
31
- "#{SendGrid4r::Client::BASE_URL}/user/settings/enforced_tls",
32
- params.to_h
37
+ SendGrid4r::REST::Settings::EnforcedTls.url,
38
+ params.to_h,
39
+ &block
33
40
  )
34
41
  SendGrid4r::REST::Settings::EnforcedTls.create_enforced_tls(resp)
35
42
  end