sendgrid-ruby 6.2.0 → 6.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/config.yml +10 -0
  3. data/.github/workflows/test-and-deploy.yml +120 -0
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +8 -0
  6. data/.rubocop_todo.yml +127 -0
  7. data/CHANGELOG.md +147 -9
  8. data/CONTRIBUTING.md +11 -21
  9. data/Dockerfile +14 -0
  10. data/FIRST_TIMERS.md +79 -0
  11. data/Gemfile +0 -1
  12. data/ISSUE_TEMPLATE.md +5 -1
  13. data/{LICENSE.md → LICENSE} +1 -1
  14. data/Makefile +9 -2
  15. data/PULL_REQUEST_TEMPLATE.md +5 -5
  16. data/README.md +23 -31
  17. data/Rakefile +2 -3
  18. data/TROUBLESHOOTING.md +17 -5
  19. data/USAGE.md +146 -39
  20. data/examples/accesssettings/accesssettings.rb +9 -12
  21. data/examples/alerts/alerts.rb +8 -11
  22. data/examples/apikeys/apikeys.rb +12 -15
  23. data/examples/asm/asm.rb +27 -30
  24. data/examples/browsers/browsers.rb +0 -3
  25. data/examples/campaigns/campaigns.rb +29 -32
  26. data/examples/categories/categories.rb +0 -3
  27. data/examples/clients/clients.rb +1 -4
  28. data/examples/contactdb/contactdb.rb +63 -66
  29. data/examples/devices/devices.rb +0 -3
  30. data/examples/emailactivity/emailactivity.rb +52 -0
  31. data/examples/geo/geo.rb +0 -3
  32. data/examples/helpers/eventwebhook/example.rb +16 -0
  33. data/examples/helpers/mail/example.rb +24 -13
  34. data/examples/helpers/settings/example.rb +1 -1
  35. data/examples/helpers/stats/example.rb +4 -4
  36. data/examples/ips/ips.rb +19 -22
  37. data/examples/mail/mail.rb +72 -75
  38. data/examples/mailboxproviders/mailboxproviders.rb +0 -3
  39. data/examples/mailsettings/mailsettings.rb +21 -24
  40. data/examples/partnersettings/partnersettings.rb +3 -6
  41. data/examples/scopes/scopes.rb +8 -10
  42. data/examples/senderauthentication/senderauthentication.rb +41 -44
  43. data/examples/senders/senders.rb +28 -31
  44. data/examples/stats/stats.rb +0 -3
  45. data/examples/subusers/subusers.rb +17 -20
  46. data/examples/suppression/suppression.rb +15 -18
  47. data/examples/templates/templates.rb +29 -31
  48. data/examples/trackingsettings/trackingsettings.rb +14 -17
  49. data/examples/user/user.rb +41 -44
  50. data/lib/rack/sendgrid_webhook_verification.rb +55 -0
  51. data/lib/sendgrid/base_interface.rb +8 -4
  52. data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +50 -0
  53. data/lib/sendgrid/helpers/inbound/README.md +5 -5
  54. data/lib/sendgrid/helpers/inbound/app.rb +2 -2
  55. data/lib/sendgrid/helpers/inbound/public/index.html +1 -1
  56. data/lib/sendgrid/helpers/inbound/send.rb +3 -3
  57. data/lib/sendgrid/helpers/ip_management/ip_management.rb +1 -1
  58. data/lib/sendgrid/helpers/mail/README.md +3 -3
  59. data/lib/sendgrid/helpers/mail/asm.rb +6 -18
  60. data/lib/sendgrid/helpers/mail/attachment.rb +12 -42
  61. data/lib/sendgrid/helpers/mail/bcc_settings.rb +6 -18
  62. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +8 -18
  63. data/lib/sendgrid/helpers/mail/category.rb +2 -2
  64. data/lib/sendgrid/helpers/mail/click_tracking.rb +6 -18
  65. data/lib/sendgrid/helpers/mail/content.rb +4 -3
  66. data/lib/sendgrid/helpers/mail/custom_arg.rb +6 -10
  67. data/lib/sendgrid/helpers/mail/email.rb +10 -5
  68. data/lib/sendgrid/helpers/mail/footer.rb +7 -27
  69. data/lib/sendgrid/helpers/mail/ganalytics.rb +10 -54
  70. data/lib/sendgrid/helpers/mail/header.rb +6 -10
  71. data/lib/sendgrid/helpers/mail/mail.rb +32 -48
  72. data/lib/sendgrid/helpers/mail/mail_settings.rb +9 -25
  73. data/lib/sendgrid/helpers/mail/open_tracking.rb +6 -18
  74. data/lib/sendgrid/helpers/mail/personalization.rb +40 -27
  75. data/lib/sendgrid/helpers/mail/section.rb +6 -10
  76. data/lib/sendgrid/helpers/mail/spam_check.rb +7 -27
  77. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +8 -36
  78. data/lib/sendgrid/helpers/mail/substitution.rb +6 -10
  79. data/lib/sendgrid/helpers/mail/tracking_settings.rb +8 -20
  80. data/lib/sendgrid/helpers/permissions/scope.rb +2 -2
  81. data/lib/sendgrid/helpers/settings/README.md +2 -2
  82. data/lib/sendgrid/helpers/settings/settings.rb +1 -1
  83. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +3 -5
  84. data/lib/sendgrid/helpers/stats/metrics.rb +5 -5
  85. data/lib/sendgrid/sendgrid.rb +4 -3
  86. data/lib/sendgrid/twilio_email.rb +1 -1
  87. data/lib/sendgrid/version.rb +1 -1
  88. data/lib/sendgrid-ruby.rb +2 -0
  89. data/mail_helper_v3.md +12 -12
  90. data/sendgrid-ruby.gemspec +8 -8
  91. data/spec/fixtures/event_webhook.rb +22 -0
  92. data/spec/rack/sendgrid_webhook_verification_spec.rb +142 -0
  93. data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +105 -0
  94. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +3 -3
  95. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +3 -3
  96. data/spec/sendgrid/helpers/settings/settings_spec.rb +2 -2
  97. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +3 -3
  98. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +3 -3
  99. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +22 -23
  100. data/spec/sendgrid/helpers/stats/metrics_spec.rb +19 -20
  101. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +22 -23
  102. data/spec/spec_helper.rb +3 -1
  103. data/static/img/github-fork.png +0 -0
  104. data/static/img/github-sign-up.png +0 -0
  105. data/test/sendgrid/helpers/mail/test_attachment.rb +4 -6
  106. data/test/sendgrid/helpers/mail/test_category.rb +0 -2
  107. data/test/sendgrid/helpers/mail/test_email.rb +17 -10
  108. data/test/sendgrid/helpers/mail/test_mail.rb +101 -102
  109. data/test/sendgrid/helpers/mail/test_personalizations.rb +145 -92
  110. data/test/sendgrid/permissions/test_scopes.rb +1 -3
  111. data/test/sendgrid/test_sendgrid-ruby.rb +1964 -1986
  112. data/twilio_sendgrid_logo.png +0 -0
  113. data/use-cases/README.md +17 -0
  114. data/use-cases/domain-authentication.md +5 -0
  115. data/use-cases/email-statistics.md +52 -0
  116. data/use-cases/legacy-templates.md +98 -0
  117. data/use-cases/personalizations.md +34 -0
  118. data/use-cases/sms.md +39 -0
  119. data/use-cases/transactional-templates.md +111 -0
  120. data/use-cases/twilio-email.md +13 -0
  121. data/use-cases/twilio-setup.md +54 -0
  122. metadata +69 -34
  123. data/.codeclimate.yml +0 -21
  124. data/.travis.yml +0 -40
  125. data/USE_CASES.md +0 -405
  126. data/docker/Dockerfile +0 -12
  127. data/docker/README.md +0 -30
  128. data/test/prism.sh +0 -42
data/examples/asm/asm.rb CHANGED
@@ -1,16 +1,14 @@
1
1
  require 'sendgrid-ruby'
2
2
 
3
-
4
3
  sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
4
 
6
-
7
5
  ##################################################
8
6
  # Create a new suppression group #
9
7
  # POST /asm/groups #
10
8
 
11
9
  data = JSON.parse('{
12
- "description": "Suggestions for products our users might like.",
13
- "is_default": true,
10
+ "description": "Suggestions for products our users might like.",
11
+ "is_default": true,
14
12
  "name": "Product Suggestions"
15
13
  }')
16
14
  response = sg.client.asm.groups.post(request_body: data)
@@ -33,11 +31,11 @@ puts response.headers
33
31
  # PATCH /asm/groups/{group_id} #
34
32
 
35
33
  data = JSON.parse('{
36
- "description": "Suggestions for items our users might like.",
37
- "id": 103,
34
+ "description": "Suggestions for items our users might like.",
35
+ "id": 103,
38
36
  "name": "Item Suggestions"
39
37
  }')
40
- group_id = "test_url_param"
38
+ group_id = 'test_url_param'
41
39
  response = sg.client.asm.groups._(group_id).patch(request_body: data)
42
40
  puts response.status_code
43
41
  puts response.body
@@ -47,8 +45,8 @@ puts response.headers
47
45
  # Get information on a single suppression group. #
48
46
  # GET /asm/groups/{group_id} #
49
47
 
50
- group_id = "test_url_param"
51
- response = sg.client.asm.groups._(group_id).get()
48
+ group_id = 'test_url_param'
49
+ response = sg.client.asm.groups._(group_id).get
52
50
  puts response.status_code
53
51
  puts response.body
54
52
  puts response.headers
@@ -57,8 +55,8 @@ puts response.headers
57
55
  # Delete a suppression group. #
58
56
  # DELETE /asm/groups/{group_id} #
59
57
 
60
- group_id = "test_url_param"
61
- response = sg.client.asm.groups._(group_id).delete()
58
+ group_id = 'test_url_param'
59
+ response = sg.client.asm.groups._(group_id).delete
62
60
  puts response.status_code
63
61
  puts response.body
64
62
  puts response.headers
@@ -69,11 +67,11 @@ puts response.headers
69
67
 
70
68
  data = JSON.parse('{
71
69
  "recipient_emails": [
72
- "test1@example.com",
70
+ "test1@example.com",
73
71
  "test2@example.com"
74
72
  ]
75
73
  }')
76
- group_id = "test_url_param"
74
+ group_id = 'test_url_param'
77
75
  response = sg.client.asm.groups._(group_id).suppressions.post(request_body: data)
78
76
  puts response.status_code
79
77
  puts response.body
@@ -83,8 +81,8 @@ puts response.headers
83
81
  # Retrieve all suppressions for a suppression group #
84
82
  # GET /asm/groups/{group_id}/suppressions #
85
83
 
86
- group_id = "test_url_param"
87
- response = sg.client.asm.groups._(group_id).suppressions.get()
84
+ group_id = 'test_url_param'
85
+ response = sg.client.asm.groups._(group_id).suppressions.get
88
86
  puts response.status_code
89
87
  puts response.body
90
88
  puts response.headers
@@ -95,12 +93,12 @@ puts response.headers
95
93
 
96
94
  data = JSON.parse('{
97
95
  "recipient_emails": [
98
- "exists1@example.com",
99
- "exists2@example.com",
96
+ "exists1@example.com",
97
+ "exists2@example.com",
100
98
  "doesnotexists@example.com"
101
99
  ]
102
100
  }')
103
- group_id = "test_url_param"
101
+ group_id = 'test_url_param'
104
102
  response = sg.client.asm.groups._(group_id).suppressions.search.post(request_body: data)
105
103
  puts response.status_code
106
104
  puts response.body
@@ -110,9 +108,9 @@ puts response.headers
110
108
  # Delete a suppression from a suppression group #
111
109
  # DELETE /asm/groups/{group_id}/suppressions/{email} #
112
110
 
113
- group_id = "test_url_param"
114
- email = "test_url_param"
115
- response = sg.client.asm.groups._(group_id).suppressions._(email).delete()
111
+ group_id = 'test_url_param'
112
+ email = 'test_url_param'
113
+ response = sg.client.asm.groups._(group_id).suppressions._(email).delete
116
114
  puts response.status_code
117
115
  puts response.body
118
116
  puts response.headers
@@ -121,7 +119,7 @@ puts response.headers
121
119
  # Retrieve all suppressions #
122
120
  # GET /asm/suppressions #
123
121
 
124
- response = sg.client.asm.suppressions.get()
122
+ response = sg.client.asm.suppressions.get
125
123
  puts response.status_code
126
124
  puts response.body
127
125
  puts response.headers
@@ -132,7 +130,7 @@ puts response.headers
132
130
 
133
131
  data = JSON.parse('{
134
132
  "recipient_emails": [
135
- "test1@example.com",
133
+ "test1@example.com",
136
134
  "test2@example.com"
137
135
  ]
138
136
  }')
@@ -145,8 +143,8 @@ puts response.headers
145
143
  # Retrieve a Global Suppression #
146
144
  # GET /asm/suppressions/global/{email} #
147
145
 
148
- email = "test_url_param"
149
- response = sg.client.asm.suppressions.global._(email).get()
146
+ email = 'test_url_param'
147
+ response = sg.client.asm.suppressions.global._(email).get
150
148
  puts response.status_code
151
149
  puts response.body
152
150
  puts response.headers
@@ -155,8 +153,8 @@ puts response.headers
155
153
  # Delete a Global Suppression #
156
154
  # DELETE /asm/suppressions/global/{email} #
157
155
 
158
- email = "test_url_param"
159
- response = sg.client.asm.suppressions.global._(email).delete()
156
+ email = 'test_url_param'
157
+ response = sg.client.asm.suppressions.global._(email).delete
160
158
  puts response.status_code
161
159
  puts response.body
162
160
  puts response.headers
@@ -165,9 +163,8 @@ puts response.headers
165
163
  # Retrieve all suppression groups for an email address #
166
164
  # GET /asm/suppressions/{email} #
167
165
 
168
- email = "test_url_param"
169
- response = sg.client.asm.suppressions._(email).get()
166
+ email = 'test_url_param'
167
+ response = sg.client.asm.suppressions._(email).get
170
168
  puts response.status_code
171
169
  puts response.body
172
170
  puts response.headers
173
-
@@ -1,9 +1,7 @@
1
1
  require 'sendgrid-ruby'
2
2
 
3
-
4
3
  sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
4
 
6
-
7
5
  ##################################################
8
6
  # Retrieve email statistics by browser. #
9
7
  # GET /browsers/stats #
@@ -13,4 +11,3 @@ response = sg.client.browsers.stats.get(query_params: params)
13
11
  puts response.status_code
14
12
  puts response.body
15
13
  puts response.headers
16
-
@@ -1,9 +1,7 @@
1
1
  require 'sendgrid-ruby'
2
2
 
3
-
4
3
  sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
4
 
6
-
7
5
  ##################################################
8
6
  # Create a Campaign #
9
7
  # POST /campaigns #
@@ -11,21 +9,21 @@ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
11
9
  data = JSON.parse('{
12
10
  "categories": [
13
11
  "spring line"
14
- ],
15
- "custom_unsubscribe_url": "",
16
- "html_content": "<html><head><title></title></head><body><p>Check out our spring line!</p></body></html>",
17
- "ip_pool": "marketing",
12
+ ],
13
+ "custom_unsubscribe_url": "",
14
+ "html_content": "<html><head><title></title></head><body><p>Check out our spring line!</p></body></html>",
15
+ "ip_pool": "marketing",
18
16
  "list_ids": [
19
- 110,
17
+ 110,
20
18
  124
21
- ],
22
- "plain_content": "Check out our spring line!",
19
+ ],
20
+ "plain_content": "Check out our spring line!",
23
21
  "segment_ids": [
24
22
  110
25
- ],
26
- "sender_id": 124451,
27
- "subject": "New Products for Spring!",
28
- "suppression_group_id": 42,
23
+ ],
24
+ "sender_id": 124451,
25
+ "subject": "New Products for Spring!",
26
+ "suppression_group_id": 42,
29
27
  "title": "March Newsletter"
30
28
  }')
31
29
  response = sg.client.campaigns.post(request_body: data)
@@ -50,13 +48,13 @@ puts response.headers
50
48
  data = JSON.parse('{
51
49
  "categories": [
52
50
  "summer line"
53
- ],
54
- "html_content": "<html><head><title></title></head><body><p>Check out our summer line!</p></body></html>",
55
- "plain_content": "Check out our summer line!",
56
- "subject": "New Products for Summer!",
51
+ ],
52
+ "html_content": "<html><head><title></title></head><body><p>Check out our summer line!</p></body></html>",
53
+ "plain_content": "Check out our summer line!",
54
+ "subject": "New Products for Summer!",
57
55
  "title": "May Newsletter"
58
56
  }')
59
- campaign_id = "test_url_param"
57
+ campaign_id = 'test_url_param'
60
58
  response = sg.client.campaigns._(campaign_id).patch(request_body: data)
61
59
  puts response.status_code
62
60
  puts response.body
@@ -66,8 +64,8 @@ puts response.headers
66
64
  # Retrieve a single campaign #
67
65
  # GET /campaigns/{campaign_id} #
68
66
 
69
- campaign_id = "test_url_param"
70
- response = sg.client.campaigns._(campaign_id).get()
67
+ campaign_id = 'test_url_param'
68
+ response = sg.client.campaigns._(campaign_id).get
71
69
  puts response.status_code
72
70
  puts response.body
73
71
  puts response.headers
@@ -76,8 +74,8 @@ puts response.headers
76
74
  # Delete a Campaign #
77
75
  # DELETE /campaigns/{campaign_id} #
78
76
 
79
- campaign_id = "test_url_param"
80
- response = sg.client.campaigns._(campaign_id).delete()
77
+ campaign_id = 'test_url_param'
78
+ response = sg.client.campaigns._(campaign_id).delete
81
79
  puts response.status_code
82
80
  puts response.body
83
81
  puts response.headers
@@ -89,7 +87,7 @@ puts response.headers
89
87
  data = JSON.parse('{
90
88
  "send_at": 1489451436
91
89
  }')
92
- campaign_id = "test_url_param"
90
+ campaign_id = 'test_url_param'
93
91
  response = sg.client.campaigns._(campaign_id).schedules.patch(request_body: data)
94
92
  puts response.status_code
95
93
  puts response.body
@@ -102,7 +100,7 @@ puts response.headers
102
100
  data = JSON.parse('{
103
101
  "send_at": 1489771528
104
102
  }')
105
- campaign_id = "test_url_param"
103
+ campaign_id = 'test_url_param'
106
104
  response = sg.client.campaigns._(campaign_id).schedules.post(request_body: data)
107
105
  puts response.status_code
108
106
  puts response.body
@@ -112,8 +110,8 @@ puts response.headers
112
110
  # View Scheduled Time of a Campaign #
113
111
  # GET /campaigns/{campaign_id}/schedules #
114
112
 
115
- campaign_id = "test_url_param"
116
- response = sg.client.campaigns._(campaign_id).schedules.get()
113
+ campaign_id = 'test_url_param'
114
+ response = sg.client.campaigns._(campaign_id).schedules.get
117
115
  puts response.status_code
118
116
  puts response.body
119
117
  puts response.headers
@@ -122,8 +120,8 @@ puts response.headers
122
120
  # Unschedule a Scheduled Campaign #
123
121
  # DELETE /campaigns/{campaign_id}/schedules #
124
122
 
125
- campaign_id = "test_url_param"
126
- response = sg.client.campaigns._(campaign_id).schedules.delete()
123
+ campaign_id = 'test_url_param'
124
+ response = sg.client.campaigns._(campaign_id).schedules.delete
127
125
  puts response.status_code
128
126
  puts response.body
129
127
  puts response.headers
@@ -132,8 +130,8 @@ puts response.headers
132
130
  # Send a Campaign #
133
131
  # POST /campaigns/{campaign_id}/schedules/now #
134
132
 
135
- campaign_id = "test_url_param"
136
- response = sg.client.campaigns._(campaign_id).schedules.now.post()
133
+ campaign_id = 'test_url_param'
134
+ response = sg.client.campaigns._(campaign_id).schedules.now.post
137
135
  puts response.status_code
138
136
  puts response.body
139
137
  puts response.headers
@@ -145,9 +143,8 @@ puts response.headers
145
143
  data = JSON.parse('{
146
144
  "to": "your.email@example.com"
147
145
  }')
148
- campaign_id = "test_url_param"
146
+ campaign_id = 'test_url_param'
149
147
  response = sg.client.campaigns._(campaign_id).schedules.test.post(request_body: data)
150
148
  puts response.status_code
151
149
  puts response.body
152
150
  puts response.headers
153
-
@@ -1,9 +1,7 @@
1
1
  require 'sendgrid-ruby'
2
2
 
3
-
4
3
  sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
4
 
6
-
7
5
  ##################################################
8
6
  # Retrieve all categories #
9
7
  # GET /categories #
@@ -33,4 +31,3 @@ response = sg.client.categories.stats.sums.get(query_params: params)
33
31
  puts response.status_code
34
32
  puts response.body
35
33
  puts response.headers
36
-
@@ -1,9 +1,7 @@
1
1
  require 'sendgrid-ruby'
2
2
 
3
-
4
3
  sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
4
 
6
-
7
5
  ##################################################
8
6
  # Retrieve email statistics by client type. #
9
7
  # GET /clients/stats #
@@ -19,9 +17,8 @@ puts response.headers
19
17
  # GET /clients/{client_type}/stats #
20
18
 
21
19
  params = JSON.parse('{"aggregated_by": "day", "start_date": "2016-01-01", "end_date": "2016-04-01"}')
22
- client_type = "test_url_param"
20
+ client_type = 'test_url_param'
23
21
  response = sg.client.clients._(client_type).stats.get(query_params: params)
24
22
  puts response.status_code
25
23
  puts response.body
26
24
  puts response.headers
27
-