sendgrid4r 1.12.0 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/README.md +2 -1
  4. data/lib/sendgrid4r/cli/alert.rb +51 -0
  5. data/lib/sendgrid4r/cli/campaign/campaign.rb +2 -2
  6. data/lib/sendgrid4r/cli/campaign/contact/custom_field.rb +1 -1
  7. data/lib/sendgrid4r/cli/campaign/contact/list.rb +1 -1
  8. data/lib/sendgrid4r/cli/campaign/contact/recipient.rb +2 -2
  9. data/lib/sendgrid4r/cli/campaign/contact/segment.rb +12 -3
  10. data/lib/sendgrid4r/cli/ipam/whitelist.rb +1 -1
  11. data/lib/sendgrid4r/cli/settings/enforced_tls.rb +2 -2
  12. data/lib/sendgrid4r/cli/settings/mail.rb +33 -9
  13. data/lib/sendgrid4r/cli/settings/partner.rb +4 -1
  14. data/lib/sendgrid4r/cli/settings/tracking.rb +13 -4
  15. data/lib/sendgrid4r/cli/sg.rb +16 -10
  16. data/lib/sendgrid4r/cli/sg_thor.rb +27 -11
  17. data/lib/sendgrid4r/cli/stats/advanced.rb +22 -20
  18. data/lib/sendgrid4r/cli/stats/category.rb +8 -8
  19. data/lib/sendgrid4r/cli/stats/global.rb +3 -3
  20. data/lib/sendgrid4r/cli/stats/parse.rb +3 -3
  21. data/lib/sendgrid4r/cli/stats/subuser.rb +10 -10
  22. data/lib/sendgrid4r/cli/suppressions/block.rb +2 -2
  23. data/lib/sendgrid4r/cli/suppressions/bounce.rb +2 -2
  24. data/lib/sendgrid4r/cli/suppressions/global_unsubscribe.rb +2 -2
  25. data/lib/sendgrid4r/cli/suppressions/group.rb +6 -1
  26. data/lib/sendgrid4r/cli/suppressions/group_unsubscribe.rb +9 -0
  27. data/lib/sendgrid4r/cli/suppressions/invalid_email.rb +2 -2
  28. data/lib/sendgrid4r/cli/suppressions/spam_report.rb +2 -2
  29. data/lib/sendgrid4r/cli/templates/version.rb +2 -2
  30. data/lib/sendgrid4r/cli/user.rb +5 -5
  31. data/lib/sendgrid4r/cli/webhooks/parse.rb +42 -2
  32. data/lib/sendgrid4r/cli/whitelabel/domain.rb +3 -3
  33. data/lib/sendgrid4r/cli/whitelabel/link.rb +2 -2
  34. data/lib/sendgrid4r/rest/alerts.rb +81 -0
  35. data/lib/sendgrid4r/rest/api.rb +1 -0
  36. data/lib/sendgrid4r/rest/blocks.rb +2 -4
  37. data/lib/sendgrid4r/rest/bounces.rb +2 -4
  38. data/lib/sendgrid4r/rest/invalid_emails.rb +2 -4
  39. data/lib/sendgrid4r/rest/request.rb +10 -6
  40. data/lib/sendgrid4r/rest/sm/groups.rb +3 -2
  41. data/lib/sendgrid4r/rest/sm/suppressions.rb +61 -14
  42. data/lib/sendgrid4r/rest/spam_reports.rb +2 -4
  43. data/lib/sendgrid4r/rest/webhooks/parse.rb +47 -6
  44. data/lib/sendgrid4r/version.rb +1 -1
  45. data/lib/sendgrid4r.rb +3 -0
  46. data/spec/cli/alert_spec.rb +71 -0
  47. data/spec/cli/sg_spec.rb +5 -0
  48. data/spec/cli/suppressions/group_spec.rb +11 -2
  49. data/spec/cli/suppressions/group_unsubscribe_spec.rb +12 -2
  50. data/spec/cli/webhooks/parse_spec.rb +53 -1
  51. data/spec/client_spec.rb +17 -1
  52. data/spec/rest/alerts_spec.rb +188 -0
  53. data/spec/rest/mail/mail_spec.rb +10 -10
  54. data/spec/rest/request_spec.rb +41 -0
  55. data/spec/rest/sm/groups_spec.rb +9 -0
  56. data/spec/rest/sm/suppressions_spec.rb +122 -35
  57. data/spec/rest/webhooks/parse_spec.rb +94 -7
  58. metadata +10 -2
@@ -5,8 +5,8 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class Block < SgThor
7
7
  desc 'list', 'List blocks'
8
- option :start_time, type: :numeric
9
- option :end_time, type: :numeric
8
+ option :start_time, banner: SgThor::UTS, type: :numeric
9
+ option :end_time, banner: SgThor::UTS, type: :numeric
10
10
  option :limit, type: :numeric
11
11
  option :offset, type: :numeric
12
12
  def list
@@ -5,8 +5,8 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class Bounce < SgThor
7
7
  desc 'list', 'List bounces'
8
- option :start_time, type: :numeric
9
- option :end_time, type: :numeric
8
+ option :start_time, banner: SgThor::UTS, type: :numeric
9
+ option :end_time, banner: SgThor::UTS, type: :numeric
10
10
  def list
11
11
  puts @client.get_bounces(parameterise(options))
12
12
  rescue RestClient::ExceptionWithResponse => e
@@ -5,8 +5,8 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class GlobalUnsubscribe < SgThor
7
7
  desc 'list', 'List global unsubscribes'
8
- option :start_time, type: :numeric
9
- option :end_time, type: :numeric
8
+ option :start_time, banner: SgThor::UTS, type: :numeric
9
+ option :end_time, banner: SgThor::UTS, type: :numeric
10
10
  option :limit, type: :numeric
11
11
  option :offset, type: :numeric
12
12
  def list
@@ -15,8 +15,13 @@ module SendGrid4r::CLI
15
15
  end
16
16
 
17
17
  desc 'list', 'List supression groups'
18
+ option :email_address
18
19
  def list
19
- puts @client.get_groups
20
+ if options[:email_address].nil?
21
+ puts @client.get_groups
22
+ else
23
+ puts @client.get_groups_by_email(parameterise(options))
24
+ end
20
25
  rescue RestClient::ExceptionWithResponse => e
21
26
  puts e.inspect
22
27
  end
@@ -21,6 +21,15 @@ module SendGrid4r::CLI
21
21
  puts e.inspect
22
22
  end
23
23
 
24
+ desc 'search', 'Search suppressed addresses for a given group'
25
+ option :group_id, require: true
26
+ option :recipient_emails, type: :array, require: true
27
+ def search
28
+ puts @client.search_suppressed_emails(parameterise(options))
29
+ rescue RestClient::ExceptionWithResponse => e
30
+ puts e.inspect
31
+ end
32
+
24
33
  desc 'remove', 'Remove an email address from the given group'
25
34
  option :group_id, require: true
26
35
  option :email_address, require: true
@@ -5,8 +5,8 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class InvalidEmail < SgThor
7
7
  desc 'list', 'List blocks'
8
- option :start_time, type: :numeric
9
- option :end_time, type: :numeric
8
+ option :start_time, banner: SgThor::UTS, type: :numeric
9
+ option :end_time, banner: SgThor::UTS, type: :numeric
10
10
  option :limit, type: :numeric
11
11
  option :offset, type: :numeric
12
12
  def list
@@ -5,8 +5,8 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class SpamReport < SgThor
7
7
  desc 'list', 'List spam reports'
8
- option :start_time, type: :numeric
9
- option :end_time, type: :numeric
8
+ option :start_time, banner: SgThor::UTS, type: :numeric
9
+ option :end_time, banner: SgThor::UTS, type: :numeric
10
10
  option :limit, type: :numeric
11
11
  option :offset, type: :numeric
12
12
  def list
@@ -10,7 +10,7 @@ module SendGrid4r::CLI
10
10
  option :subject, require: true
11
11
  option :html_content, require: true
12
12
  option :plain_content, require: true
13
- option :active, type: :numeric
13
+ option :active, type: :numeric, banner: '[0|1]'
14
14
  def create
15
15
  factory = SendGrid4r::Factory::VersionFactory.new
16
16
  params = parameterise(options)
@@ -49,7 +49,7 @@ module SendGrid4r::CLI
49
49
  option :subject
50
50
  option :html_content
51
51
  option :plain_content
52
- option :active
52
+ option :active, type: :numeric, banner: '[0|1]'
53
53
  def update
54
54
  factory = SendGrid4r::Factory::VersionFactory.new
55
55
  params = parameterise(options)
@@ -3,7 +3,7 @@ module SendGrid4r::CLI
3
3
  # SendGrid Web API v3 User
4
4
  #
5
5
  class User < SgThor
6
- desc 'profile', 'Get or Update user Profile'
6
+ desc 'profile [get|update]', 'Get or Update user Profile'
7
7
  option :address
8
8
  option :city
9
9
  option :company
@@ -27,7 +27,7 @@ module SendGrid4r::CLI
27
27
  puts e.inspect
28
28
  end
29
29
 
30
- desc 'account', 'Get user account'
30
+ desc 'account [get]', 'Get user account'
31
31
  def account(action)
32
32
  case action
33
33
  when 'get'
@@ -39,7 +39,7 @@ module SendGrid4r::CLI
39
39
  puts e.inspect
40
40
  end
41
41
 
42
- desc 'email', 'Get or update user email'
42
+ desc 'email [get|update]', 'Get or update user email'
43
43
  option :email
44
44
  def email(action)
45
45
  case action
@@ -54,7 +54,7 @@ module SendGrid4r::CLI
54
54
  puts e.inspect
55
55
  end
56
56
 
57
- desc 'username', 'Get or update username'
57
+ desc 'username [get|update]', 'Get or update username'
58
58
  option :username
59
59
  def username(action)
60
60
  case action
@@ -69,7 +69,7 @@ module SendGrid4r::CLI
69
69
  puts e.inspect
70
70
  end
71
71
 
72
- desc('password', 'Update password')
72
+ desc('password [update]', 'Update password')
73
73
  option :new_password, require: true
74
74
  option :old_password, require: true
75
75
  def password(action)
@@ -4,9 +4,49 @@ module SendGrid4r::CLI
4
4
  # SendGrid Web API v3 Webhook Parse
5
5
  #
6
6
  class Parse < SgThor
7
- desc 'get', 'Get Parse Webhook Settings'
7
+ desc 'list', 'List parse webhook settings'
8
+ option :limit, type: :numeric
9
+ option :offset, type: :numeric
10
+ def list
11
+ puts @client.get_parse_settings(parameterise(options))
12
+ rescue RestClient::ExceptionWithResponse => e
13
+ puts e.inspect
14
+ end
15
+
16
+ desc 'create', 'Create a parse webhook setting'
17
+ option :hostname, require: true
18
+ option :url, require: true
19
+ option :spam_check, type: :boolean, require: true
20
+ option :send_raw, type: :boolean, require: true
21
+ def create
22
+ puts @client.post_parse_setting(parameterise(options))
23
+ rescue RestClient::ExceptionWithResponse => e
24
+ puts e.inspect
25
+ end
26
+
27
+ desc 'get', 'Get a parse webhook setting'
28
+ option :hostname
8
29
  def get
9
- puts @client.get_parse_settings
30
+ puts @client.get_parse_setting(parameterise(options))
31
+ rescue RestClient::ExceptionWithResponse => e
32
+ puts e.inspect
33
+ end
34
+
35
+ desc 'update', 'Update a parse webhook setting'
36
+ option :hostname, require: true
37
+ option :url
38
+ option :spam_check, type: :boolean
39
+ option :send_raw, type: :boolean
40
+ def update
41
+ puts @client.patch_parse_setting(parameterise(options))
42
+ rescue RestClient::ExceptionWithResponse => e
43
+ puts e.inspect
44
+ end
45
+
46
+ desc 'delete', 'Delete a parse webhook setting'
47
+ option :hostname, require: true
48
+ def delete
49
+ puts @client.delete_parse_setting(parameterise(options))
10
50
  rescue RestClient::ExceptionWithResponse => e
11
51
  puts e.inspect
12
52
  end
@@ -5,9 +5,9 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class Domain < SgThor
7
7
  desc 'list', 'List all Domain whitelabels'
8
- option :limit
9
- option :offset
10
- option :exclude_subusers
8
+ option :limit, type: :numeric
9
+ option :offset, type: :numeric
10
+ option :exclude_subusers, type: :boolean
11
11
  option :username
12
12
  option :domain
13
13
  def list
@@ -5,8 +5,8 @@ module SendGrid4r::CLI
5
5
  #
6
6
  class Link < SgThor
7
7
  desc 'list', 'List all Link whitelabels'
8
- option :limit
9
- option :offset
8
+ option :limit, type: :numeric
9
+ option :offset, type: :numeric
10
10
  option :exclude_subusers
11
11
  option :username
12
12
  option :domain
@@ -0,0 +1,81 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module SendGrid4r::REST
4
+ #
5
+ # SendGrid Web API v3 Alerts
6
+ #
7
+ module Alerts
8
+ include Request
9
+
10
+ Alert = Struct.new(
11
+ :created_at,
12
+ :email_to,
13
+ :frequency,
14
+ :id,
15
+ :percentage,
16
+ :type,
17
+ :updated_at
18
+ )
19
+
20
+ def self.url(alert_id = nil)
21
+ url = "#{BASE_URL}/alerts"
22
+ url = "#{url}/#{alert_id}" unless alert_id.nil?
23
+ url
24
+ end
25
+
26
+ def self.create_alerts(resp)
27
+ return resp if resp.nil?
28
+ resp.map { |alert| Alerts.create_alert(alert) }
29
+ end
30
+
31
+ def self.create_alert(resp)
32
+ return resp if resp.nil?
33
+ created_at = Time.at(resp['created_at'])
34
+ updated_at = Time.at(resp['updated_at'])
35
+ Alert.new(
36
+ created_at,
37
+ resp['email_to'],
38
+ resp['frequency'],
39
+ resp['id'],
40
+ resp['percentage'],
41
+ resp['type'],
42
+ updated_at
43
+ )
44
+ end
45
+
46
+ def get_alerts(&block)
47
+ resp = get(@auth, Alerts.url, &block)
48
+ finish(resp, @raw_resp) { |r| Alerts.create_alerts(r) }
49
+ end
50
+
51
+ def post_alert(type:, email_to:, percentage: nil, frequency: nil, &block)
52
+ params = { type: type, email_to: email_to }
53
+ params[:percentage] = percentage unless percentage.nil?
54
+ params[:frequency] = frequency unless frequency.nil?
55
+ resp = post(@auth, Alerts.url, params, &block)
56
+ finish(resp, @raw_resp) { |r| Alerts.create_alert(r) }
57
+ end
58
+
59
+ def get_alert(alert_id:, &block)
60
+ endpoint = Alerts.url(alert_id)
61
+ resp = get(@auth, endpoint, &block)
62
+ finish(resp, @raw_resp) { |r| Alerts.create_alert(r) }
63
+ end
64
+
65
+ def delete_alert(alert_id:, &block)
66
+ delete(@auth, Alerts.url(alert_id), &block)
67
+ end
68
+
69
+ def patch_alert(
70
+ alert_id:, email_to: nil, frequency: nil, percentage: nil, &block
71
+ )
72
+ params = {}
73
+ params[:email_to] = email_to unless email_to.nil?
74
+ params[:frequency] = frequency unless frequency.nil?
75
+ params[:percentage] = percentage unless percentage.nil?
76
+ endpoint = Alerts.url(alert_id)
77
+ resp = patch(@auth, endpoint, params, &block)
78
+ finish(resp, @raw_resp) { |r| Alerts.create_alert(r) }
79
+ end
80
+ end
81
+ end
@@ -19,6 +19,7 @@ module SendGrid4r::REST
19
19
  include SendGrid4r::REST::Ips::Addresses
20
20
  include SendGrid4r::REST::Ips::Warmup
21
21
  include SendGrid4r::REST::Ips::Pools
22
+ include SendGrid4r::REST::Alerts
22
23
  include SendGrid4r::REST::Categories
23
24
  include SendGrid4r::REST::Stats::Global
24
25
  include SendGrid4r::REST::Stats::Category
@@ -48,14 +48,12 @@ module SendGrid4r::REST
48
48
  end
49
49
 
50
50
  def get_block(email:, &block)
51
- params = { email: email }
52
- resp = get(@auth, Blocks.url(email), params, &block)
51
+ resp = get(@auth, Blocks.url(email), &block)
53
52
  finish(resp, @raw_resp) { |r| Blocks.create_blocks(r) }
54
53
  end
55
54
 
56
55
  def delete_block(email:, &block)
57
- params = { email: email }
58
- delete(@auth, Blocks.url(email), params, &block)
56
+ delete(@auth, Blocks.url(email), &block)
59
57
  end
60
58
  end
61
59
  end
@@ -44,14 +44,12 @@ module SendGrid4r::REST
44
44
  end
45
45
 
46
46
  def get_bounce(email:, &block)
47
- params = { email: email }
48
- resp = get(@auth, Bounces.url(email), params, &block)
47
+ resp = get(@auth, Bounces.url(email), &block)
49
48
  finish(resp, @raw_resp) { |r| Bounces.create_bounces(r) }
50
49
  end
51
50
 
52
51
  def delete_bounce(email:, &block)
53
- params = { email: email }
54
- delete(@auth, Bounces.url(email), params, &block)
52
+ delete(@auth, Bounces.url(email), &block)
55
53
  end
56
54
  end
57
55
  end
@@ -50,14 +50,12 @@ module SendGrid4r::REST
50
50
  end
51
51
 
52
52
  def get_invalid_email(email:, &block)
53
- params = { email: email }
54
- resp = get(@auth, InvalidEmails.url(email), params, &block)
53
+ resp = get(@auth, InvalidEmails.url(email), &block)
55
54
  finish(resp, @raw_resp) { |r| InvalidEmails.create_invalid_emails(r) }
56
55
  end
57
56
 
58
57
  def delete_invalid_email(email:, &block)
59
- params = { email: email }
60
- delete(@auth, InvalidEmails.url(email), params, &block)
58
+ delete(@auth, InvalidEmails.url(email), &block)
61
59
  end
62
60
  end
63
61
  end
@@ -61,14 +61,18 @@ module SendGrid4r::REST
61
61
  end
62
62
 
63
63
  def process_url_params(endpoint, params)
64
- if params.nil? || params.empty?
65
- endpoint
66
- else
67
- query_string = params.collect do |k, v|
64
+ return endpoint if params.nil? || params.empty?
65
+ if params.is_a?(Array)
66
+ ary_params = params
67
+ elsif params.is_a?(Hash)
68
+ ary_params = [params]
69
+ end
70
+ query_string = ary_params.collect do |hash|
71
+ hash.collect do |k, v|
68
72
  "#{k}=#{CGI.escape(process_array_params(v))}"
69
73
  end.join('&')
70
- endpoint + "?#{query_string}"
71
- end
74
+ end.join('&')
75
+ "#{endpoint}?#{query_string}"
72
76
  end
73
77
 
74
78
  def process_array_params(v)
@@ -43,8 +43,9 @@ module SendGrid4r::REST
43
43
  finish(resp, @raw_resp) { |r| Sm::Groups.create_group(r) }
44
44
  end
45
45
 
46
- def get_groups(&block)
47
- resp = get(@auth, Sm::Groups.url, &block)
46
+ def get_groups(ids: nil, &block)
47
+ i = ids.map { |id| { id: id } } unless ids.nil?
48
+ resp = get(@auth, Sm::Groups.url, i, &block)
48
49
  finish(resp, @raw_resp) { |r| Sm::Groups.create_groups(r) }
49
50
  end
50
51
 
@@ -8,8 +8,10 @@ module SendGrid4r::REST
8
8
  module Suppressions
9
9
  include Request
10
10
 
11
- Suppression = Struct.new(:id, :name, :description, :suppressed)
12
- Suppressions = Struct.new(:suppressions)
11
+ Group = Struct.new(
12
+ :id, :name, :description, :suppressed, :is_default
13
+ )
14
+ Groups = Struct.new(:suppressions)
13
15
 
14
16
  def self.url(group_id, email_address = nil)
15
17
  url = "#{BASE_URL}/asm/groups/#{group_id}/suppressions"
@@ -17,21 +19,64 @@ module SendGrid4r::REST
17
19
  url
18
20
  end
19
21
 
20
- def self.create_suppressions(resp)
22
+ def self.create_groups(resp)
21
23
  return resp if resp.nil?
22
24
  suppressions = resp['suppressions'].map do |suppression|
23
- Sm::Suppressions.create_suppression(suppression)
25
+ Sm::Suppressions.create_group(suppression)
24
26
  end
25
- Suppressions.new(suppressions)
27
+ Groups.new(suppressions)
28
+ end
29
+
30
+ def self.create_group(resp)
31
+ return resp if resp.nil?
32
+ Group.new(
33
+ resp['id'],
34
+ resp['name'],
35
+ resp['description'],
36
+ resp['suppressed'],
37
+ resp['is_default']
38
+ )
39
+ end
40
+
41
+ Suppression = Struct.new(
42
+ :email, :group_id, :group_name, :created_at
43
+ )
44
+
45
+ def self.suppressions_url(email = nil)
46
+ url = "#{BASE_URL}/asm/suppressions"
47
+ url = "#{url}/#{email}" unless email.nil?
48
+ url
26
49
  end
27
50
 
28
51
  def self.create_suppression(resp)
29
52
  return resp if resp.nil?
53
+ created_at = Time.at(resp['created_at'])
30
54
  Suppression.new(
31
- resp['id'], resp['name'], resp['description'], resp['suppressed']
55
+ resp['email'],
56
+ resp['group_id'],
57
+ resp['group_name'],
58
+ created_at
32
59
  )
33
60
  end
34
61
 
62
+ def get_suppressions(&block)
63
+ endpoint = Sm::Suppressions.suppressions_url
64
+ resp = get(@auth, endpoint, &block)
65
+ finish(resp, @raw_resp) do |r|
66
+ r.map do |suppression|
67
+ Sm::Suppressions.create_suppression(suppression)
68
+ end
69
+ end
70
+ end
71
+
72
+ def get_groups_by_email(email_address:, &block)
73
+ endpoint = Sm::Suppressions.suppressions_url(email_address)
74
+ resp = get(@auth, endpoint, &block)
75
+ finish(resp, @raw_resp) do |r|
76
+ Sm::Suppressions.create_groups(r)
77
+ end
78
+ end
79
+
35
80
  def post_suppressed_emails(group_id:, recipient_emails:, &block)
36
81
  resp = post(
37
82
  @auth,
@@ -48,14 +93,6 @@ module SendGrid4r::REST
48
93
  finish(resp, @raw_resp) { |r| r }
49
94
  end
50
95
 
51
- def get_suppressions(email_address:, &block)
52
- endpoint = "#{BASE_URL}/asm/suppressions/#{email_address}"
53
- resp = get(@auth, endpoint, &block)
54
- finish(resp, @raw_resp) do |r|
55
- Sm::Suppressions.create_suppressions(r)
56
- end
57
- end
58
-
59
96
  def delete_suppressed_email(group_id:, email_address:, &block)
60
97
  delete(
61
98
  @auth,
@@ -63,6 +100,16 @@ module SendGrid4r::REST
63
100
  &block
64
101
  )
65
102
  end
103
+
104
+ def search_suppressed_emails(group_id:, recipient_emails:, &block)
105
+ resp = post(
106
+ @auth,
107
+ Sm::Suppressions.url(group_id, :search),
108
+ recipient_emails: recipient_emails,
109
+ &block
110
+ )
111
+ finish(resp, @raw_resp) { |r| r }
112
+ end
66
113
  end
67
114
  end
68
115
  end
@@ -48,14 +48,12 @@ module SendGrid4r::REST
48
48
  end
49
49
 
50
50
  def get_spam_report(email:, &block)
51
- params = { email: email }
52
- resp = get(@auth, SpamReports.url(email), params, &block)
51
+ resp = get(@auth, SpamReports.url(email), &block)
53
52
  finish(resp, @raw_resp) { |r| SpamReports.create_spam_reports(r) }
54
53
  end
55
54
 
56
55
  def delete_spam_report(email:, &block)
57
- params = { email: email }
58
- delete(@auth, SpamReports.url(email), params, &block)
56
+ delete(@auth, SpamReports.url(email), &block)
59
57
  end
60
58
  end
61
59
  end
@@ -12,10 +12,12 @@ module SendGrid4r::REST
12
12
  include Request
13
13
 
14
14
  ParseSettings = Struct.new(:result)
15
- ParseSetting = Struct.new(:url, :hostname, :spam_check_outgoing)
15
+ ParseSetting = Struct.new(:url, :hostname, :spam_check, :send_raw)
16
16
 
17
- def self.url
18
- "#{BASE_URL}/user/webhooks/parse/settings"
17
+ def self.url(hostname = nil)
18
+ url = "#{BASE_URL}/user/webhooks/parse/settings"
19
+ url = "#{url}/#{hostname}" unless hostname.nil?
20
+ url
19
21
  end
20
22
 
21
23
  def self.create_parse_settings(resp)
@@ -29,14 +31,53 @@ module SendGrid4r::REST
29
31
  def self.create_parse_setting(resp)
30
32
  return resp if resp.nil?
31
33
  ParseSetting.new(
32
- resp['url'], resp['hostname'], resp['spam_check_outgoing']
34
+ resp['url'],
35
+ resp['hostname'],
36
+ resp['spam_check'],
37
+ resp['send_raw']
33
38
  )
34
39
  end
35
40
 
36
- def get_parse_settings(&block)
37
- resp = get(@auth, Parse.url, &block)
41
+ def get_parse_settings(limit: nil, offset: nil, &block)
42
+ params = {}
43
+ params[:limit] = limit unless limit.nil?
44
+ params[:offset] = offset unless offset.nil?
45
+ resp = get(@auth, Parse.url, params, &block)
38
46
  finish(resp, @raw_resp) { |r| Parse.create_parse_settings(r) }
39
47
  end
48
+
49
+ def post_parse_setting(
50
+ hostname:, url:, spam_check:, send_raw:, &block
51
+ )
52
+ params = {
53
+ hostname: hostname,
54
+ url: url,
55
+ spam_check: spam_check,
56
+ send_raw: send_raw
57
+ }
58
+ resp = post(@auth, Parse.url, params, &block)
59
+ finish(resp, @raw_resp) { |r| Parse.create_parse_setting(r) }
60
+ end
61
+
62
+ def get_parse_setting(hostname:, &block)
63
+ resp = get(@auth, Parse.url(hostname), &block)
64
+ finish(resp, @raw_resp) { |r| Parse.create_parse_setting(r) }
65
+ end
66
+
67
+ def patch_parse_setting(
68
+ hostname:, url: nil, spam_check: nil, send_raw: nil, &block
69
+ )
70
+ params = {}
71
+ params[:url] = url unless url.nil?
72
+ params[:spam_check] = spam_check unless spam_check.nil?
73
+ params[:send_raw] = send_raw unless send_raw.nil?
74
+ resp = patch(@auth, Parse.url(hostname), params, &block)
75
+ finish(resp, @raw_resp) { |r| Parse.create_parse_setting(r) }
76
+ end
77
+
78
+ def delete_parse_setting(hostname:, &block)
79
+ delete(@auth, Parse.url(hostname), &block)
80
+ end
40
81
  end
41
82
  end
42
83
  end
@@ -2,5 +2,5 @@
2
2
  # SendGrid API v3 wrapper implementation.
3
3
  #
4
4
  module SendGrid4r
5
- VERSION = '1.12.0'
5
+ VERSION = '1.13.0'
6
6
  end
data/lib/sendgrid4r.rb CHANGED
@@ -32,6 +32,8 @@ require 'sendgrid4r/rest/marketing_campaigns/contacts/recipients'
32
32
  require 'sendgrid4r/rest/marketing_campaigns/contacts/reserved_fields'
33
33
  require 'sendgrid4r/rest/marketing_campaigns/contacts/segments'
34
34
 
35
+ require 'sendgrid4r/rest/alerts'
36
+
35
37
  require 'sendgrid4r/rest/categories'
36
38
 
37
39
  require 'sendgrid4r/rest/email_activity'
@@ -126,6 +128,7 @@ require 'sendgrid4r/cli/whitelabel/ip'
126
128
  require 'sendgrid4r/cli/whitelabel/link'
127
129
  require 'sendgrid4r/cli/whitelabel/whitelabel'
128
130
  require 'sendgrid4r/cli/category'
131
+ require 'sendgrid4r/cli/alert'
129
132
  require 'sendgrid4r/cli/user'
130
133
  require 'sendgrid4r/cli/campaign/contact/custom_field'
131
134
  require 'sendgrid4r/cli/campaign/contact/list'