sendgrid-ruby 5.3.0 → 6.7.0
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.
- checksums.yaml +5 -5
- data/.github/workflows/pr-lint.yml +15 -0
- data/.github/workflows/test-and-deploy.yml +120 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +8 -0
- data/.rubocop_todo.yml +127 -0
- data/CHANGELOG.md +261 -8
- data/CODE_OF_CONDUCT.md +57 -25
- data/CONTRIBUTING.md +24 -71
- data/Dockerfile +14 -0
- data/FIRST_TIMERS.md +53 -0
- data/Gemfile +0 -1
- data/LICENSE +21 -0
- data/Makefile +14 -0
- data/PULL_REQUEST_TEMPLATE.md +31 -0
- data/README.md +39 -43
- data/Rakefile +3 -4
- data/TROUBLESHOOTING.md +41 -21
- data/UPGRADE.md +5 -0
- data/USAGE.md +1231 -1122
- data/examples/accesssettings/accesssettings.rb +9 -12
- data/examples/alerts/alerts.rb +8 -11
- data/examples/apikeys/apikeys.rb +12 -15
- data/examples/asm/asm.rb +27 -30
- data/examples/browsers/browsers.rb +0 -3
- data/examples/campaigns/campaigns.rb +29 -32
- data/examples/categories/categories.rb +0 -3
- data/examples/clients/clients.rb +1 -4
- data/examples/contactdb/contactdb.rb +63 -66
- data/examples/dataresidency/setregion.rb +48 -0
- data/examples/devices/devices.rb +0 -3
- data/examples/emailactivity/emailactivity.rb +52 -0
- data/examples/geo/geo.rb +0 -3
- data/examples/helpers/eventwebhook/example.rb +16 -0
- data/examples/helpers/mail/example.rb +30 -19
- data/examples/helpers/settings/example.rb +1 -1
- data/examples/helpers/stats/example.rb +4 -4
- data/examples/ips/ips.rb +31 -21
- data/examples/mail/mail.rb +73 -76
- data/examples/mailboxproviders/mailboxproviders.rb +0 -3
- data/examples/mailsettings/mailsettings.rb +21 -24
- data/examples/partnersettings/partnersettings.rb +3 -6
- data/examples/scopes/scopes.rb +49 -5
- data/examples/{whitelabel/whitelabel.rb → senderauthentication/senderauthentication.rb} +68 -71
- data/examples/senders/senders.rb +28 -31
- data/examples/stats/stats.rb +0 -3
- data/examples/subusers/subusers.rb +17 -20
- data/examples/suppression/suppression.rb +23 -26
- data/examples/templates/templates.rb +29 -31
- data/examples/trackingsettings/trackingsettings.rb +14 -17
- data/examples/user/user.rb +41 -44
- data/lib/rack/sendgrid_webhook_verification.rb +55 -0
- data/lib/sendgrid/base_interface.rb +57 -0
- data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +50 -0
- data/lib/sendgrid/helpers/inbound/README.md +26 -9
- data/lib/sendgrid/helpers/inbound/app.rb +15 -3
- data/lib/sendgrid/helpers/inbound/public/index.html +2 -2
- data/lib/sendgrid/helpers/inbound/sample_data/default_data.txt +2 -2
- data/lib/sendgrid/helpers/inbound/sample_data/raw_data.txt +2 -2
- data/lib/sendgrid/helpers/inbound/sample_data/raw_data_with_attachments.txt +2 -2
- data/lib/sendgrid/helpers/inbound/send.rb +5 -5
- data/lib/sendgrid/helpers/ip_management/ip_management.rb +17 -0
- data/lib/sendgrid/helpers/mail/README.md +4 -4
- data/lib/sendgrid/helpers/mail/asm.rb +4 -18
- data/lib/sendgrid/helpers/mail/attachment.rb +30 -38
- data/lib/sendgrid/helpers/mail/bcc_settings.rb +4 -18
- data/lib/sendgrid/helpers/mail/bypass_list_management.rb +6 -18
- data/lib/sendgrid/helpers/mail/category.rb +2 -12
- data/lib/sendgrid/helpers/mail/click_tracking.rb +4 -18
- data/lib/sendgrid/helpers/mail/content.rb +4 -18
- data/lib/sendgrid/helpers/mail/custom_arg.rb +4 -10
- data/lib/sendgrid/helpers/mail/email.rb +10 -20
- data/lib/sendgrid/helpers/mail/footer.rb +5 -27
- data/lib/sendgrid/helpers/mail/ganalytics.rb +9 -55
- data/lib/sendgrid/helpers/mail/header.rb +4 -10
- data/lib/sendgrid/helpers/mail/mail.rb +37 -87
- data/lib/sendgrid/helpers/mail/mail_settings.rb +7 -25
- data/lib/sendgrid/helpers/mail/open_tracking.rb +4 -18
- data/lib/sendgrid/helpers/mail/personalization.rb +38 -27
- data/lib/sendgrid/helpers/mail/section.rb +4 -10
- data/lib/sendgrid/helpers/mail/spam_check.rb +5 -27
- data/lib/sendgrid/helpers/mail/subscription_tracking.rb +6 -36
- data/lib/sendgrid/helpers/mail/substitution.rb +4 -10
- data/lib/sendgrid/helpers/mail/tracking_settings.rb +6 -20
- data/lib/sendgrid/helpers/permissions/scope.rb +28 -0
- data/lib/sendgrid/helpers/permissions/scopes.yml +309 -0
- data/lib/sendgrid/helpers/settings/README.md +3 -3
- data/lib/sendgrid/helpers/settings/settings.rb +1 -1
- data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +3 -5
- data/lib/sendgrid/helpers/stats/metrics.rb +5 -7
- data/lib/sendgrid/helpers/stats/stats_response.rb +1 -3
- data/lib/sendgrid/sendgrid.rb +21 -0
- data/lib/sendgrid/twilio_email.rb +21 -0
- data/lib/sendgrid/version.rb +1 -1
- data/lib/sendgrid-ruby.rb +7 -1
- data/mail_helper_v3.md +21 -21
- data/sendgrid-ruby.gemspec +12 -12
- data/spec/fixtures/event_webhook.rb +22 -0
- data/spec/rack/sendgrid_webhook_verification_spec.rb +142 -0
- data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +105 -0
- data/spec/sendgrid/helpers/ip_management/ip_management_spec.rb +12 -0
- data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +3 -3
- data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +3 -3
- data/spec/sendgrid/helpers/settings/settings_spec.rb +2 -2
- data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +3 -3
- data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +3 -3
- data/spec/sendgrid/helpers/stats/email_stats_spec.rb +22 -23
- data/spec/sendgrid/helpers/stats/metrics_spec.rb +19 -20
- data/spec/sendgrid/helpers/stats/stats_response_spec.rb +22 -23
- data/spec/sendgrid/sendgrid_spec.rb +11 -0
- data/spec/sendgrid/twilio_email_spec.rb +11 -0
- data/spec/spec_helper.rb +3 -1
- data/static/img/github-fork.png +0 -0
- data/static/img/github-sign-up.png +0 -0
- data/test/sendgrid/helpers/mail/test_attachment.rb +33 -0
- data/test/sendgrid/helpers/mail/test_category.rb +0 -2
- data/test/sendgrid/helpers/mail/test_data_residency.rb +44 -0
- data/test/sendgrid/helpers/mail/test_email.rb +17 -10
- data/test/sendgrid/helpers/mail/test_mail.rb +126 -119
- data/test/sendgrid/helpers/mail/test_personalizations.rb +145 -92
- data/test/sendgrid/permissions/test_scopes.rb +36 -0
- data/test/sendgrid/test_sendgrid-ruby.rb +1961 -1979
- data/twilio_sendgrid_logo.png +0 -0
- data/use-cases/README.md +17 -0
- data/use-cases/domain-authentication.md +5 -0
- data/use-cases/email-statistics.md +52 -0
- data/use-cases/legacy-templates.md +98 -0
- data/use-cases/personalizations.md +34 -0
- data/use-cases/sms.md +39 -0
- data/use-cases/transactional-templates.md +111 -0
- data/use-cases/twilio-email.md +13 -0
- data/use-cases/twilio-setup.md +54 -0
- metadata +99 -45
- data/.codeclimate.yml +0 -21
- data/.github/ISSUE_TEMPLATE +0 -17
- data/.github/PULL_REQUEST_TEMPLATE +0 -24
- data/.travis.yml +0 -29
- data/LICENSE.txt +0 -22
- data/USE_CASES.md +0 -147
- data/docker/Dockerfile +0 -12
- data/docker/README.md +0 -30
- data/lib/sendgrid/client.rb +0 -35
- data/test/prism.sh +0 -42
data/TROUBLESHOOTING.md
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
If you have
|
|
1
|
+
If you have an issue logging into your Twilio SendGrid account, please read this [document](https://sendgrid.com/docs/ui/account-and-settings/troubleshooting-login/). For any questions regarding login issues, please contact our [support team](https://support.sendgrid.com).
|
|
2
|
+
|
|
3
|
+
If you have a non-library Twilio SendGrid issue, please contact our [support team](https://support.sendgrid.com).
|
|
2
4
|
|
|
3
5
|
If you can't find a solution below, please open an [issue](https://github.com/sendgrid/sendgrid-ruby/issues).
|
|
4
6
|
|
|
5
7
|
|
|
6
8
|
## Table of Contents
|
|
7
9
|
|
|
8
|
-
* [Migrating from v2 to v3](#migrating)
|
|
9
|
-
* [Continue Using v2](#v2)
|
|
10
|
-
* [Testing v3 /mail/send Calls Directly](#testing)
|
|
11
|
-
* [Error Messages](#error)
|
|
12
|
-
* [
|
|
13
|
-
* [Environment Variables and Your SendGrid API Key](#environment)
|
|
14
|
-
* [Using the Package Manager](#package-manager)
|
|
10
|
+
* [Migrating from v2 to v3](#migrating-from-v2-to-v3)
|
|
11
|
+
* [Continue Using v2](#continue-using-v2)
|
|
12
|
+
* [Testing v3 /mail/send Calls Directly](#testing-v3-mailsend-calls-directly)
|
|
13
|
+
* [Error Messages](#error-messages)
|
|
14
|
+
* [Versioning](#versioning)
|
|
15
|
+
* [Environment Variables and Your Twilio SendGrid API Key](#environment-variables-and-your-twilio-sendgrid-api-key)
|
|
16
|
+
* [Using the Package Manager](#using-the-package-manager)
|
|
15
17
|
* [Rails Specifics](#rails-specifics)
|
|
16
|
-
* [
|
|
18
|
+
* [Ruby Versions](#ruby-versions)
|
|
19
|
+
* [Viewing the Request Body](#viewing-the-request-body)
|
|
20
|
+
* [Verifying Event Webhooks](#signed-webhooks)
|
|
17
21
|
|
|
18
22
|
<a name="migrating"></a>
|
|
19
23
|
## Migrating from v2 to v3
|
|
@@ -25,7 +29,7 @@ Please review [our guide](https://sendgrid.com/docs/Classroom/Send/v3_Mail_Send/
|
|
|
25
29
|
|
|
26
30
|
[Here](https://github.com/sendgrid/sendgrid-ruby/tree/0fbf579c0f7ed1dff87adc4957c4dc5a6b257068) is the last working version with v2 support.
|
|
27
31
|
|
|
28
|
-
Using
|
|
32
|
+
Using RubyGems:
|
|
29
33
|
|
|
30
34
|
Add this line to your application's Gemfile:
|
|
31
35
|
|
|
@@ -52,7 +56,7 @@ Click the "Clone or download" green button in [GitHub](https://github.com/sendgr
|
|
|
52
56
|
<a name="testing"></a>
|
|
53
57
|
## Testing v3 /mail/send Calls Directly
|
|
54
58
|
|
|
55
|
-
[Here](https://sendgrid.com/docs/
|
|
59
|
+
[Here](https://sendgrid.com/docs/for-developers/sending-email/curl-examples/) are some cURL examples for common use cases.
|
|
56
60
|
|
|
57
61
|
<a name="error"></a>
|
|
58
62
|
## Error Messages
|
|
@@ -67,17 +71,17 @@ rescue Exception => e
|
|
|
67
71
|
end
|
|
68
72
|
```
|
|
69
73
|
|
|
70
|
-
<a name="
|
|
71
|
-
##
|
|
74
|
+
<a name="versioning"></a>
|
|
75
|
+
## Versioning
|
|
72
76
|
|
|
73
|
-
We follow the MAJOR.MINOR.PATCH versioning scheme as described by [SemVer.org](http://semver.org). Therefore, we recommend that you always pin (or vendor) the particular version you are working with
|
|
77
|
+
We follow the MAJOR.MINOR.PATCH versioning scheme as described by [SemVer.org](http://semver.org). Therefore, we recommend that you always pin (or vendor) the particular version you are working with your code and never auto-update to the latest version. Especially when there is a MAJOR point release since that is guaranteed to be a breaking change. Changes are documented in the [CHANGELOG](CHANGELOG.md) and [releases](https://github.com/sendgrid/sendgrid-ruby/releases) section.
|
|
74
78
|
|
|
75
79
|
<a name="environment"></a>
|
|
76
|
-
## Environment Variables and Your SendGrid API Key
|
|
80
|
+
## Environment Variables and Your Twilio SendGrid API Key
|
|
77
81
|
|
|
78
|
-
All of our examples assume you are using [environment variables](https://github.com/sendgrid/sendgrid-ruby#setup-environment-variables) to hold your SendGrid API key.
|
|
82
|
+
All of our examples assume you are using [environment variables](https://github.com/sendgrid/sendgrid-ruby#setup-environment-variables) to hold your Twilio SendGrid API key.
|
|
79
83
|
|
|
80
|
-
If you choose to add your SendGrid API key directly (not recommended):
|
|
84
|
+
If you choose to add your Twilio SendGrid API key directly (not recommended):
|
|
81
85
|
|
|
82
86
|
`sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])`
|
|
83
87
|
|
|
@@ -85,7 +89,7 @@ becomes
|
|
|
85
89
|
|
|
86
90
|
`sg = SendGrid::API.new(api_key: 'SENDGRID_API_KEY')`
|
|
87
91
|
|
|
88
|
-
In the first case SENDGRID_API_KEY is in reference to the name of the environment variable, while the second case references the actual SendGrid API Key.
|
|
92
|
+
In the first case, SENDGRID_API_KEY is in reference to the name of the environment variable, while the second case references the actual Twilio SendGrid API Key.
|
|
89
93
|
|
|
90
94
|
<a name="package-manager"></a>
|
|
91
95
|
## Using the Package Manager
|
|
@@ -115,9 +119,14 @@ gem install sendgrid-ruby -v X.X.X
|
|
|
115
119
|
<a name="rails-specifics"></a>
|
|
116
120
|
## Rails Specifics
|
|
117
121
|
|
|
118
|
-
- Namespace collision between Rails own `Mail` class and sendgrid class `Mail`. To avoid that issues please use `SendGrid::Mail` instead.
|
|
122
|
+
- Namespace collision between Rails own `Mail` class and sendgrid class `Mail`. To avoid that issues please use `SendGrid:: Mail` instead.
|
|
123
|
+
|
|
124
|
+
- The possibility of a namespace collision between the sendgrid class `Email` and your own defined `Email` class. To avoid these issues, you can skip the `include SendGrid` line and use the `SendGrid::` prefix for Email. Please see this [SO answer](https://stackoverflow.com/questions/41508464/rails-model-name-conflict-with-included-gem?noredirect=1#comment70223099_41508464) for specifics.
|
|
125
|
+
|
|
126
|
+
<a name="ruby-versions"></a>
|
|
127
|
+
## Ruby Versions
|
|
119
128
|
|
|
120
|
-
|
|
129
|
+
This SDK [does not work with ruby version 2.6.0](https://github.com/sendgrid/sendgrid-ruby/issues/378) because of [this bug](https://bugs.ruby-lang.org/issues/15468). Please use any other [supported version](https://github.com/sendgrid/sendgrid-ruby#prerequisites).
|
|
121
130
|
|
|
122
131
|
<a name="request-body"></a>
|
|
123
132
|
## Viewing the Request Body
|
|
@@ -127,5 +136,16 @@ When debugging or testing, it may be useful to examine the raw request header to
|
|
|
127
136
|
You can do this before `response = sg.client.mail._('send').post(request_body: mail.to_json)` like so:
|
|
128
137
|
|
|
129
138
|
```ruby
|
|
130
|
-
puts mail
|
|
139
|
+
puts mail.to_json
|
|
131
140
|
```
|
|
141
|
+
|
|
142
|
+
<a name="signed-webhooks"></a>
|
|
143
|
+
## Signed Webhook Verification
|
|
144
|
+
|
|
145
|
+
Twilio SendGrid's Event Webhook will notify a URL via HTTP POST with information about events that occur as your mail is processed. [This](https://docs.sendgrid.com/for-developers/tracking-events/getting-started-event-webhook-security-features) article covers all you need to know to secure the Event Webhook, allowing you to verify that incoming requests originate from Twilio SendGrid. The sendgrid-ruby library can help you verify these Signed Event Webhooks.
|
|
146
|
+
|
|
147
|
+
You can find the usage example [here](examples/helpers/eventwebhook/example.rb) and the tests [here](spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb).
|
|
148
|
+
If you are still having trouble getting the validation to work, follow the following instructions:
|
|
149
|
+
- Be sure to use the *raw* payload for validation
|
|
150
|
+
- Be sure to include a trailing carriage return and newline in your payload
|
|
151
|
+
- In case of multi-event webhooks, make sure you include the trailing newline and carriage return after *each* event
|