sendgrid-ruby 6.3.4 → 6.3.5

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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -6
  3. data/.rubocop_todo.yml +109 -0
  4. data/.travis.yml +1 -2
  5. data/CHANGELOG.md +18 -1
  6. data/CONTRIBUTING.md +2 -5
  7. data/Makefile +1 -0
  8. data/README.md +1 -7
  9. data/Rakefile +2 -3
  10. data/USAGE.md +110 -2
  11. data/examples/accesssettings/accesssettings.rb +9 -12
  12. data/examples/alerts/alerts.rb +8 -11
  13. data/examples/apikeys/apikeys.rb +12 -15
  14. data/examples/asm/asm.rb +27 -30
  15. data/examples/browsers/browsers.rb +0 -3
  16. data/examples/campaigns/campaigns.rb +29 -32
  17. data/examples/categories/categories.rb +0 -3
  18. data/examples/clients/clients.rb +1 -4
  19. data/examples/contactdb/contactdb.rb +63 -66
  20. data/examples/devices/devices.rb +0 -3
  21. data/examples/emailactivity/emailactivity.rb +52 -0
  22. data/examples/geo/geo.rb +0 -3
  23. data/examples/helpers/eventwebhook/example.rb +4 -4
  24. data/examples/helpers/mail/example.rb +9 -10
  25. data/examples/helpers/settings/example.rb +1 -1
  26. data/examples/helpers/stats/example.rb +4 -4
  27. data/examples/ips/ips.rb +19 -22
  28. data/examples/mail/mail.rb +72 -75
  29. data/examples/mailboxproviders/mailboxproviders.rb +0 -3
  30. data/examples/mailsettings/mailsettings.rb +21 -24
  31. data/examples/partnersettings/partnersettings.rb +3 -6
  32. data/examples/scopes/scopes.rb +7 -9
  33. data/examples/senderauthentication/senderauthentication.rb +41 -44
  34. data/examples/senders/senders.rb +28 -31
  35. data/examples/stats/stats.rb +0 -3
  36. data/examples/subusers/subusers.rb +17 -20
  37. data/examples/suppression/suppression.rb +15 -18
  38. data/examples/templates/templates.rb +29 -31
  39. data/examples/trackingsettings/trackingsettings.rb +14 -17
  40. data/examples/user/user.rb +41 -44
  41. data/lib/rack/sendgrid_webhook_verification.rb +3 -2
  42. data/lib/sendgrid/base_interface.rb +1 -1
  43. data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +4 -6
  44. data/lib/sendgrid/helpers/inbound/app.rb +1 -1
  45. data/lib/sendgrid/helpers/inbound/send.rb +2 -2
  46. data/lib/sendgrid/helpers/ip_management/ip_management.rb +1 -1
  47. data/lib/sendgrid/helpers/mail/asm.rb +6 -18
  48. data/lib/sendgrid/helpers/mail/attachment.rb +12 -42
  49. data/lib/sendgrid/helpers/mail/bcc_settings.rb +6 -18
  50. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +8 -18
  51. data/lib/sendgrid/helpers/mail/category.rb +2 -2
  52. data/lib/sendgrid/helpers/mail/click_tracking.rb +6 -18
  53. data/lib/sendgrid/helpers/mail/content.rb +4 -3
  54. data/lib/sendgrid/helpers/mail/custom_arg.rb +6 -10
  55. data/lib/sendgrid/helpers/mail/email.rb +5 -4
  56. data/lib/sendgrid/helpers/mail/footer.rb +7 -27
  57. data/lib/sendgrid/helpers/mail/ganalytics.rb +10 -54
  58. data/lib/sendgrid/helpers/mail/header.rb +6 -10
  59. data/lib/sendgrid/helpers/mail/mail.rb +30 -48
  60. data/lib/sendgrid/helpers/mail/mail_settings.rb +9 -25
  61. data/lib/sendgrid/helpers/mail/open_tracking.rb +6 -18
  62. data/lib/sendgrid/helpers/mail/personalization.rb +34 -27
  63. data/lib/sendgrid/helpers/mail/section.rb +6 -10
  64. data/lib/sendgrid/helpers/mail/spam_check.rb +7 -27
  65. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +8 -36
  66. data/lib/sendgrid/helpers/mail/substitution.rb +6 -10
  67. data/lib/sendgrid/helpers/mail/tracking_settings.rb +7 -20
  68. data/lib/sendgrid/helpers/permissions/scope.rb +1 -1
  69. data/lib/sendgrid/helpers/settings/settings.rb +1 -1
  70. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +3 -5
  71. data/lib/sendgrid/helpers/stats/metrics.rb +5 -5
  72. data/lib/sendgrid/sendgrid.rb +1 -1
  73. data/lib/sendgrid/twilio_email.rb +1 -1
  74. data/lib/sendgrid/version.rb +1 -1
  75. data/mail_helper_v3.md +3 -3
  76. data/sendgrid-ruby.gemspec +7 -8
  77. data/spec/fixtures/event_webhook.rb +17 -11
  78. data/spec/rack/sendgrid_webhook_verification_spec.rb +4 -4
  79. data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +38 -36
  80. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +1 -1
  81. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +1 -1
  82. data/spec/sendgrid/helpers/settings/settings_spec.rb +2 -2
  83. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +1 -1
  84. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +1 -1
  85. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +22 -23
  86. data/spec/sendgrid/helpers/stats/metrics_spec.rb +19 -20
  87. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +22 -23
  88. data/spec/spec_helper.rb +1 -1
  89. data/test/sendgrid/helpers/mail/test_attachment.rb +4 -6
  90. data/test/sendgrid/helpers/mail/test_category.rb +0 -2
  91. data/test/sendgrid/helpers/mail/test_email.rb +9 -11
  92. data/test/sendgrid/helpers/mail/test_mail.rb +101 -102
  93. data/test/sendgrid/helpers/mail/test_personalizations.rb +106 -93
  94. data/test/sendgrid/permissions/test_scopes.rb +0 -2
  95. data/test/sendgrid/test_sendgrid-ruby.rb +1946 -1947
  96. data/use-cases/legacy-templates.md +1 -1
  97. data/use-cases/transactional-templates.md +1 -1
  98. metadata +38 -36
@@ -1,30 +1,18 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class BccSettings
3
- def initialize(enable: nil, email: nil)
4
- @enable = enable
5
- @email = email
6
- end
5
+ attr_accessor :enable, :email
7
6
 
8
- def enable=(enable)
7
+ def initialize(enable: nil, email: nil)
9
8
  @enable = enable
10
- end
11
-
12
- def enable
13
- @enable
14
- end
15
-
16
- def email=(email)
17
9
  @email = email
18
10
  end
19
11
 
20
- def email
21
- @email
22
- end
23
-
24
12
  def to_json(*)
25
13
  {
26
- 'enable' => self.enable,
27
- 'email' => self.email
14
+ 'enable' => enable,
15
+ 'email' => email
28
16
  }.delete_if { |_, value| value.to_s.strip == '' }
29
17
  end
30
18
  end
@@ -1,40 +1,30 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class BypassListManagement
3
- def initialize(enable: nil)
4
- @enable = enable
5
- end
5
+ attr_accessor :enable
6
6
 
7
- def enable=(enable)
7
+ def initialize(enable: nil)
8
8
  @enable = enable
9
9
  end
10
10
 
11
- def enable
12
- @enable
13
- end
14
-
15
11
  def to_json(*)
16
12
  {
17
- 'enable' => self.enable
13
+ 'enable' => enable
18
14
  }.delete_if { |_, value| value.to_s.strip == '' }
19
15
  end
20
16
  end
21
17
 
22
18
  class SandBoxMode
23
- def initialize(enable: nil)
24
- @enable = enable
25
- end
19
+ attr_accessor :enable
26
20
 
27
- def enable=(enable)
21
+ def initialize(enable: nil)
28
22
  @enable = enable
29
23
  end
30
24
 
31
- def enable
32
- @enable
33
- end
34
-
35
25
  def to_json(*)
36
26
  {
37
- 'enable' => self.enable
27
+ 'enable' => enable
38
28
  }.delete_if { |_, value| value.to_s.strip == '' }
39
29
  end
40
30
  end
@@ -12,7 +12,7 @@ module SendGrid
12
12
  }.delete_if { |_, value| value.to_s.strip == '' }
13
13
  end
14
14
 
15
- alias :category :name
16
- alias :category= :name=
15
+ alias category name
16
+ alias category= name=
17
17
  end
18
18
  end
@@ -1,30 +1,18 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class ClickTracking
3
- def initialize(enable: nil, enable_text: nil)
4
- @enable = enable
5
- @enable_text = enable_text
6
- end
5
+ attr_accessor :enable, :enable_text
7
6
 
8
- def enable=(enable)
7
+ def initialize(enable: nil, enable_text: nil)
9
8
  @enable = enable
10
- end
11
-
12
- def enable
13
- @enable
14
- end
15
-
16
- def enable_text=(enable_text)
17
9
  @enable_text = enable_text
18
10
  end
19
11
 
20
- def enable_text
21
- @enable_text
22
- end
23
-
24
12
  def to_json(*)
25
13
  {
26
- 'enable' => self.enable,
27
- 'enable_text' => self.enable_text
14
+ 'enable' => enable,
15
+ 'enable_text' => enable_text
28
16
  }.delete_if { |_, value| value.to_s.strip == '' }
29
17
  end
30
18
  end
@@ -1,6 +1,7 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class Content
3
-
4
5
  attr_accessor :type, :value
5
6
 
6
7
  def initialize(type: nil, value: nil)
@@ -10,8 +11,8 @@ module SendGrid
10
11
 
11
12
  def to_json(*)
12
13
  {
13
- 'type' => self.type,
14
- 'value' => self.value
14
+ 'type' => type,
15
+ 'value' => value
15
16
  }.delete_if { |_, value| value.to_s.strip == '' }
16
17
  end
17
18
  end
@@ -1,21 +1,17 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class CustomArg
5
+ attr_accessor :custom_arg
6
+
3
7
  def initialize(key: nil, value: nil)
4
8
  @custom_arg = {}
5
- (key.nil? || value.nil?) ? @custom_arg = nil : @custom_arg[key.to_s] = value.to_s
6
- end
7
-
8
- def custom_arg=(custom_arg)
9
- @custom_arg = custom_arg
10
- end
11
-
12
- def custom_arg
13
- @custom_arg
9
+ key.nil? || value.nil? ? @custom_arg = nil : @custom_arg[key.to_s] = value.to_s
14
10
  end
15
11
 
16
12
  def to_json(*)
17
13
  {
18
- 'custom_arg' => self.custom_arg
14
+ 'custom_arg' => custom_arg
19
15
  }.delete_if { |_, value| value.to_s.strip == '' }
20
16
  end
21
17
  end
@@ -1,6 +1,7 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class Email
3
-
4
5
  attr_accessor :email, :name
5
6
 
6
7
  def initialize(email: nil, name: nil)
@@ -14,13 +15,13 @@ module SendGrid
14
15
 
15
16
  def split_email(email)
16
17
  split = /(?:(?<address>.+)\s)?<?(?<email>.+@[^>]+)>?/.match(email)
17
- return split[:email], split[:address]
18
+ [split[:email], split[:address]]
18
19
  end
19
20
 
20
21
  def to_json(*)
21
22
  {
22
- 'email' => self.email,
23
- 'name' => self.name
23
+ 'email' => email,
24
+ 'name' => name
24
25
  }.delete_if { |_, value| value.to_s.strip == '' }
25
26
  end
26
27
  end
@@ -1,40 +1,20 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class Footer
5
+ attr_accessor :enable, :text, :html
6
+
3
7
  def initialize(enable: nil, text: nil, html: nil)
4
8
  @enable = enable
5
9
  @text = text
6
10
  @html = html
7
11
  end
8
12
 
9
- def enable=(enable)
10
- @enable = enable
11
- end
12
-
13
- def enable
14
- @enable
15
- end
16
-
17
- def text=(text)
18
- @text = text
19
- end
20
-
21
- def text
22
- @text
23
- end
24
-
25
- def html=(html)
26
- @html = html
27
- end
28
-
29
- def html
30
- @html
31
- end
32
-
33
13
  def to_json(*)
34
14
  {
35
- 'enable' => self.enable,
36
- 'text' => self.text,
37
- 'html' => self.html
15
+ 'enable' => enable,
16
+ 'text' => text,
17
+ 'html' => html
38
18
  }.delete_if { |_, value| value.to_s.strip == '' }
39
19
  end
40
20
  end
@@ -1,5 +1,9 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class Ganalytics
5
+ attr_accessor :enable, :utm_source, :utm_medium, :utm_term, :utm_content, :utm_name, :utm_campaign
6
+
3
7
  def initialize(enable: nil, utm_source: nil, utm_medium: nil, utm_term: nil, utm_content: nil, utm_campaign: nil, utm_name: nil)
4
8
  @enable = enable
5
9
  @utm_source = utm_source
@@ -10,62 +14,14 @@ module SendGrid
10
14
  @utm_name = utm_name
11
15
  end
12
16
 
13
- def enable=(enable)
14
- @enable = enable
15
- end
16
-
17
- def enable
18
- @enable
19
- end
20
-
21
- def utm_source=(utm_source)
22
- @utm_source = utm_source
23
- end
24
-
25
- def utm_source
26
- @utm_source
27
- end
28
-
29
- def utm_medium=(utm_medium)
30
- @utm_medium = utm_medium
31
- end
32
-
33
- def utm_medium
34
- @utm_medium
35
- end
36
-
37
- def utm_term=(utm_term)
38
- @utm_term = utm_term
39
- end
40
-
41
- def utm_term
42
- @utm_term
43
- end
44
-
45
- def utm_content=(utm_content)
46
- @utm_content = utm_content
47
- end
48
-
49
- def utm_content
50
- @utm_content
51
- end
52
-
53
- def utm_campaign=(utm_campaign)
54
- @utm_campaign = utm_campaign
55
- end
56
-
57
- def utm_campaign
58
- @utm_campaign
59
- end
60
-
61
17
  def to_json(*)
62
18
  {
63
- 'enable' => self.enable,
64
- 'utm_source' => self.utm_source,
65
- 'utm_medium' => self.utm_medium,
66
- 'utm_term' => self.utm_term,
67
- 'utm_content' => self.utm_content,
68
- 'utm_campaign' => self.utm_campaign
19
+ 'enable' => enable,
20
+ 'utm_source' => utm_source,
21
+ 'utm_medium' => utm_medium,
22
+ 'utm_term' => utm_term,
23
+ 'utm_content' => utm_content,
24
+ 'utm_campaign' => utm_campaign
69
25
  }.delete_if { |_, value| value.to_s.strip == '' }
70
26
  end
71
27
  end
@@ -1,21 +1,17 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class Header
5
+ attr_accessor :header
6
+
3
7
  def initialize(key: nil, value: nil)
4
8
  @header = {}
5
- (key.nil? || value.nil?) ? @header = nil : @header[key] = value
6
- end
7
-
8
- def header=(header)
9
- @header = header
10
- end
11
-
12
- def header
13
- @header
9
+ key.nil? || value.nil? ? @header = nil : @header[key] = value
14
10
  end
15
11
 
16
12
  def to_json(*)
17
13
  {
18
- 'header' => self.header
14
+ 'header' => header
19
15
  }.delete_if { |_, value| value.to_s.strip == '' }
20
16
  end
21
17
  end
@@ -1,12 +1,14 @@
1
1
  # Build the request body for the v3/mail/send endpoint
2
2
  # Please see the examples/helpers/mail/example.rb for a demonstration of usage
3
+ require 'json'
4
+
3
5
  module SendGrid
4
6
  class Mail
5
-
6
7
  attr_accessor :subject, :ip_pool_name, :template_id, :send_at, :batch_id
7
8
  attr_reader :personalizations, :contents, :attachments, :categories, :sections, :headers, :custom_args
9
+ attr_writer :from, :asm, :mail_settings, :tracking_settings, :reply_to
8
10
 
9
- def initialize(from_email=nil, subj=nil, to_email=nil, cont=nil)
11
+ def initialize(from_email = nil, subj = nil, to_email = nil, cont = nil)
10
12
  @from = nil
11
13
  @subject = nil
12
14
  @personalizations = []
@@ -25,18 +27,14 @@ module SendGrid
25
27
  @tracking_settings = nil
26
28
  @reply_to = nil
27
29
 
28
- if !(from_email.nil? && subj.nil? && to_email.nil? && cont.nil?)
29
- self.from = from_email
30
- self.subject = subj
31
- personalization = Personalization.new
32
- personalization.add_to(to_email)
33
- self.add_personalization(personalization)
34
- self.add_content(cont)
35
- end
36
- end
30
+ return if from_email.nil? && subj.nil? && to_email.nil? && cont.nil?
37
31
 
38
- def from=(from)
39
- @from = from
32
+ self.from = from_email
33
+ self.subject = subj
34
+ personalization = Personalization.new
35
+ personalization.add_to(to_email)
36
+ add_personalization(personalization)
37
+ add_content(cont)
40
38
  end
41
39
 
42
40
  def from
@@ -54,7 +52,7 @@ module SendGrid
54
52
  def check_for_secrets(patterns)
55
53
  contents = @contents.map { |content| content['value'] }.join(' ')
56
54
  patterns.each do |pattern|
57
- raise SecurityError.new('Content contains sensitive information.') if contents.match(pattern)
55
+ raise SecurityError, 'Content contains sensitive information.' if contents.match(pattern)
58
56
  end
59
57
  end
60
58
 
@@ -81,58 +79,42 @@ module SendGrid
81
79
  @custom_args = @custom_args.merge(custom_arg['custom_arg'])
82
80
  end
83
81
 
84
- def asm=(asm)
85
- @asm = asm
86
- end
87
-
88
82
  def asm
89
83
  @asm.nil? ? nil : @asm.to_json
90
84
  end
91
85
 
92
- def mail_settings=(mail_settings)
93
- @mail_settings = mail_settings
94
- end
95
-
96
86
  def mail_settings
97
87
  @mail_settings.nil? ? nil : @mail_settings.to_json
98
88
  end
99
89
 
100
- def tracking_settings=(tracking_settings)
101
- @tracking_settings = tracking_settings
102
- end
103
-
104
90
  def tracking_settings
105
91
  @tracking_settings.nil? ? nil : @tracking_settings.to_json
106
92
  end
107
93
 
108
- def reply_to=(reply_to)
109
- @reply_to = reply_to
110
- end
111
-
112
94
  def reply_to
113
95
  @reply_to.nil? ? nil : @reply_to.to_json
114
96
  end
115
97
 
116
98
  def to_json(*)
117
99
  {
118
- 'from' => self.from,
119
- 'subject' => self.subject,
120
- 'personalizations' => self.personalizations,
121
- 'content' => self.contents,
122
- 'attachments' => self.attachments,
123
- 'template_id' => self.template_id,
124
- 'sections' => self.sections,
125
- 'headers' => self.headers,
126
- 'categories' => self.categories,
127
- 'custom_args' => self.custom_args,
128
- 'send_at' => self.send_at,
129
- 'batch_id' => self.batch_id,
130
- 'asm' => self.asm,
131
- 'ip_pool_name' => self.ip_pool_name,
132
- 'mail_settings' => self.mail_settings,
133
- 'tracking_settings' => self.tracking_settings,
134
- 'reply_to' => self.reply_to
135
- }.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {}}
100
+ 'from' => from,
101
+ 'subject' => subject,
102
+ 'personalizations' => personalizations,
103
+ 'content' => contents,
104
+ 'attachments' => attachments,
105
+ 'template_id' => template_id,
106
+ 'sections' => sections,
107
+ 'headers' => headers,
108
+ 'categories' => categories,
109
+ 'custom_args' => custom_args,
110
+ 'send_at' => send_at,
111
+ 'batch_id' => batch_id,
112
+ 'asm' => asm,
113
+ 'ip_pool_name' => ip_pool_name,
114
+ 'mail_settings' => mail_settings,
115
+ 'tracking_settings' => tracking_settings,
116
+ 'reply_to' => reply_to
117
+ }.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {} }
136
118
  end
137
119
  end
138
120
  end