sendgrid-ruby 6.3.1 → 6.3.6

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.rubocop.yml +8 -0
  4. data/.rubocop_todo.yml +109 -0
  5. data/.travis.yml +2 -3
  6. data/CHANGELOG.md +61 -9
  7. data/CONTRIBUTING.md +10 -20
  8. data/FIRST_TIMERS.md +79 -0
  9. data/ISSUE_TEMPLATE.md +5 -1
  10. data/Makefile +3 -2
  11. data/PULL_REQUEST_TEMPLATE.md +1 -1
  12. data/README.md +22 -27
  13. data/Rakefile +2 -3
  14. data/TROUBLESHOOTING.md +5 -5
  15. data/USAGE.md +145 -38
  16. data/examples/accesssettings/accesssettings.rb +9 -12
  17. data/examples/alerts/alerts.rb +8 -11
  18. data/examples/apikeys/apikeys.rb +12 -15
  19. data/examples/asm/asm.rb +27 -30
  20. data/examples/browsers/browsers.rb +0 -3
  21. data/examples/campaigns/campaigns.rb +29 -32
  22. data/examples/categories/categories.rb +0 -3
  23. data/examples/clients/clients.rb +1 -4
  24. data/examples/contactdb/contactdb.rb +63 -66
  25. data/examples/devices/devices.rb +0 -3
  26. data/examples/emailactivity/emailactivity.rb +52 -0
  27. data/examples/geo/geo.rb +0 -3
  28. data/examples/helpers/eventwebhook/example.rb +4 -4
  29. data/examples/helpers/mail/example.rb +19 -13
  30. data/examples/helpers/settings/example.rb +1 -1
  31. data/examples/helpers/stats/example.rb +4 -4
  32. data/examples/ips/ips.rb +19 -22
  33. data/examples/mail/mail.rb +72 -75
  34. data/examples/mailboxproviders/mailboxproviders.rb +0 -3
  35. data/examples/mailsettings/mailsettings.rb +21 -24
  36. data/examples/partnersettings/partnersettings.rb +3 -6
  37. data/examples/scopes/scopes.rb +7 -9
  38. data/examples/senderauthentication/senderauthentication.rb +41 -44
  39. data/examples/senders/senders.rb +28 -31
  40. data/examples/stats/stats.rb +0 -3
  41. data/examples/subusers/subusers.rb +17 -20
  42. data/examples/suppression/suppression.rb +15 -18
  43. data/examples/templates/templates.rb +29 -31
  44. data/examples/trackingsettings/trackingsettings.rb +14 -17
  45. data/examples/user/user.rb +41 -44
  46. data/lib/rack/sendgrid_webhook_verification.rb +5 -2
  47. data/lib/sendgrid/base_interface.rb +1 -1
  48. data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +4 -6
  49. data/lib/sendgrid/helpers/inbound/README.md +5 -5
  50. data/lib/sendgrid/helpers/inbound/app.rb +1 -1
  51. data/lib/sendgrid/helpers/inbound/public/index.html +1 -1
  52. data/lib/sendgrid/helpers/inbound/send.rb +2 -2
  53. data/lib/sendgrid/helpers/ip_management/ip_management.rb +1 -1
  54. data/lib/sendgrid/helpers/mail/README.md +3 -3
  55. data/lib/sendgrid/helpers/mail/asm.rb +6 -18
  56. data/lib/sendgrid/helpers/mail/attachment.rb +12 -42
  57. data/lib/sendgrid/helpers/mail/bcc_settings.rb +6 -18
  58. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +8 -18
  59. data/lib/sendgrid/helpers/mail/category.rb +2 -2
  60. data/lib/sendgrid/helpers/mail/click_tracking.rb +6 -18
  61. data/lib/sendgrid/helpers/mail/content.rb +4 -3
  62. data/lib/sendgrid/helpers/mail/custom_arg.rb +6 -10
  63. data/lib/sendgrid/helpers/mail/email.rb +5 -4
  64. data/lib/sendgrid/helpers/mail/footer.rb +7 -27
  65. data/lib/sendgrid/helpers/mail/ganalytics.rb +10 -54
  66. data/lib/sendgrid/helpers/mail/header.rb +6 -10
  67. data/lib/sendgrid/helpers/mail/mail.rb +30 -48
  68. data/lib/sendgrid/helpers/mail/mail_settings.rb +9 -25
  69. data/lib/sendgrid/helpers/mail/open_tracking.rb +6 -18
  70. data/lib/sendgrid/helpers/mail/personalization.rb +34 -27
  71. data/lib/sendgrid/helpers/mail/section.rb +6 -10
  72. data/lib/sendgrid/helpers/mail/spam_check.rb +7 -27
  73. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +8 -36
  74. data/lib/sendgrid/helpers/mail/substitution.rb +6 -10
  75. data/lib/sendgrid/helpers/mail/tracking_settings.rb +7 -20
  76. data/lib/sendgrid/helpers/permissions/scope.rb +1 -1
  77. data/lib/sendgrid/helpers/settings/README.md +2 -2
  78. data/lib/sendgrid/helpers/settings/settings.rb +1 -1
  79. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +3 -5
  80. data/lib/sendgrid/helpers/stats/metrics.rb +5 -5
  81. data/lib/sendgrid/sendgrid.rb +1 -1
  82. data/lib/sendgrid/twilio_email.rb +1 -1
  83. data/lib/sendgrid/version.rb +1 -1
  84. data/mail_helper_v3.md +12 -12
  85. data/sendgrid-ruby.gemspec +8 -8
  86. data/spec/fixtures/event_webhook.rb +17 -11
  87. data/spec/rack/sendgrid_webhook_verification_spec.rb +30 -4
  88. data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +38 -36
  89. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +1 -1
  90. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +1 -1
  91. data/spec/sendgrid/helpers/settings/settings_spec.rb +2 -2
  92. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +1 -1
  93. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +1 -1
  94. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +22 -23
  95. data/spec/sendgrid/helpers/stats/metrics_spec.rb +19 -20
  96. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +22 -23
  97. data/spec/spec_helper.rb +3 -1
  98. data/static/img/github-fork.png +0 -0
  99. data/static/img/github-sign-up.png +0 -0
  100. data/test/sendgrid/helpers/mail/test_attachment.rb +4 -6
  101. data/test/sendgrid/helpers/mail/test_category.rb +0 -2
  102. data/test/sendgrid/helpers/mail/test_email.rb +9 -11
  103. data/test/sendgrid/helpers/mail/test_mail.rb +101 -102
  104. data/test/sendgrid/helpers/mail/test_personalizations.rb +106 -93
  105. data/test/sendgrid/permissions/test_scopes.rb +0 -2
  106. data/test/sendgrid/test_sendgrid-ruby.rb +1948 -1958
  107. data/twilio_sendgrid_logo.png +0 -0
  108. data/use-cases/README.md +16 -0
  109. data/use-cases/domain-authentication.md +5 -0
  110. data/use-cases/email-statistics.md +52 -0
  111. data/use-cases/legacy-templates.md +98 -0
  112. data/use-cases/sms.md +39 -0
  113. data/use-cases/transactional-templates.md +111 -0
  114. data/use-cases/twilio-email.md +13 -0
  115. data/use-cases/twilio-setup.md +54 -0
  116. metadata +53 -28
  117. data/USE_CASES.md +0 -405
  118. data/docker/Dockerfile +0 -12
  119. data/docker/README.md +0 -30
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Quick Start
4
4
 
5
- Run the [example](https://github.com/sendgrid/sendgrid-ruby/tree/master/examples/helpers/mail) (make sure you have set your environment variable to include your SENDGRID_API_KEY).
5
+ Run the [example](../../../../examples/helpers/mail) (make sure you have set your environment variable to include your SENDGRID_API_KEY).
6
6
 
7
7
  ```bash
8
8
  ruby examples/helpers/mail/example.rb
@@ -10,5 +10,5 @@ ruby examples/helpers/mail/example.rb
10
10
 
11
11
  ## Usage
12
12
 
13
- - See the [example](https://github.com/sendgrid/sendgrid-ruby/tree/master/examples/helpers/mail) for a complete working example.
14
- - [Documentation](https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/overview.html)
13
+ - See the [example](../../../../examples/helpers/mail) for a complete working example.
14
+ - [Documentation](https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html)
@@ -1,30 +1,18 @@
1
+ require 'json'
2
+
1
3
  module SendGrid
2
4
  class ASM
3
- def initialize(group_id: nil, groups_to_display: nil)
4
- @group_id = group_id
5
- @groups_to_display = groups_to_display
6
- end
5
+ attr_accessor :group_id, :groups_to_display
7
6
 
8
- def group_id=(group_id)
7
+ def initialize(group_id: nil, groups_to_display: nil)
9
8
  @group_id = group_id
10
- end
11
-
12
- def group_id
13
- @group_id
14
- end
15
-
16
- def groups_to_display=(groups_to_display)
17
9
  @groups_to_display = groups_to_display
18
10
  end
19
11
 
20
- def groups_to_display
21
- @groups_to_display
22
- end
23
-
24
12
  def to_json(*)
25
13
  {
26
- 'group_id' => self.group_id,
27
- 'groups_to_display' => self.groups_to_display
14
+ 'group_id' => group_id,
15
+ 'groups_to_display' => groups_to_display
28
16
  }.delete_if { |_, value| value.to_s.strip == '' }
29
17
  end
30
18
  end
@@ -2,6 +2,8 @@ require 'base64'
2
2
 
3
3
  module SendGrid
4
4
  class Attachment
5
+ attr_accessor :type, :filename, :disposition, :content_id
6
+
5
7
  def initialize
6
8
  @content = nil
7
9
  @type = nil
@@ -18,52 +20,20 @@ module SendGrid
18
20
  def content
19
21
  return @encoded_content if @encoded_content
20
22
 
21
- if @content.respond_to?(:read)
22
- @encoded_content = encode @content
23
- else
24
- @encoded_content = @content
25
- end
26
- end
27
-
28
- def type=(type)
29
- @type = type
30
- end
31
-
32
- def type
33
- @type
34
- end
35
-
36
- def filename=(filename)
37
- @filename = filename
38
- end
39
-
40
- def filename
41
- @filename
42
- end
43
-
44
- def disposition=(disposition)
45
- @disposition = disposition
46
- end
47
-
48
- def disposition
49
- @disposition
50
- end
51
-
52
- def content_id=(content_id)
53
- @content_id = content_id
54
- end
55
-
56
- def content_id
57
- @content_id
23
+ @encoded_content = if @content.respond_to?(:read)
24
+ encode @content
25
+ else
26
+ @content
27
+ end
58
28
  end
59
29
 
60
30
  def to_json(*)
61
31
  {
62
- 'content' => self.content,
63
- 'type' => self.type,
64
- 'filename' => self.filename,
65
- 'disposition' => self.disposition,
66
- 'content_id' => self.content_id
32
+ 'content' => content,
33
+ 'type' => type,
34
+ 'filename' => filename,
35
+ 'disposition' => disposition,
36
+ 'content_id' => content_id
67
37
  }.delete_if { |_, value| value.to_s.strip == '' }
68
38
  end
69
39
 
@@ -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