sendgrid-actionmailer 3.1.1 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +35 -0
- data/CHANGELOG.md +7 -0
- data/lib/sendgrid_actionmailer.rb +15 -10
- data/lib/sendgrid_actionmailer/railtie.rb +3 -1
- data/lib/sendgrid_actionmailer/version.rb +1 -1
- data/sendgrid-actionmailer.gemspec +1 -1
- data/spec/lib/sendgrid_actionmailer_spec.rb +13 -3
- metadata +5 -5
- data/.travis.yml +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb577847afaccad306f73fa0c34b928298b8dda4de873f8d0459dd96f41bee34
|
4
|
+
data.tar.gz: 9e9fa4dc9d9301aa0473f90ce3c1ae683a91d4313945333c636fc302dcb0f624
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f387f4d44937198fcbbad709ec316b27d0e8bbbbd87b997fbeb5fdb5ec6a26a8f1b72f226bbae55b6e23692711b6dabcce9ea6aa240c7789a55ca776a7761cdf
|
7
|
+
data.tar.gz: 309ea7246ece21e445746f2faab91ad30b6f37392da0db1c00ec51e4033362cee300b86e546ee2c6e6cd18d4b2012454fa50d2fee31d43dcf1f9b6ee50b5062f
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- name: Set up Ruby
|
27
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
+
# uses: ruby/setup-ruby@v1
|
30
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
33
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rake
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 3.2.0 - 2020-02-16
|
4
|
+
- #107 Feature/sendgrid api settings, expand settings/options to allow for other SendGrid::Api client settings
|
5
|
+
- #106 The SendGrid API simple error handling
|
6
|
+
- #105 Github Actions CI
|
7
|
+
- #102 Add http_options to configurable in mailer settings
|
8
|
+
- #101 Railtie should use ActiveSupport.on_load
|
9
|
+
|
3
10
|
## 3.1.1 - 2020-11-06
|
4
11
|
- #92 globally configured mail_settings
|
5
12
|
- #95 add_mail_settings - support global settings
|
@@ -14,13 +14,14 @@ module SendGridActionMailer
|
|
14
14
|
raise_delivery_errors: false
|
15
15
|
}.freeze
|
16
16
|
|
17
|
-
attr_accessor :settings, :
|
17
|
+
attr_accessor :settings, :options
|
18
18
|
|
19
19
|
def initialize(params = {})
|
20
20
|
self.settings = DEFAULTS.merge(params)
|
21
21
|
end
|
22
22
|
|
23
23
|
def deliver!(mail)
|
24
|
+
self.options = {}
|
24
25
|
sendgrid_mail = Mail.new.tap do |m|
|
25
26
|
m.from = to_email(mail.from)
|
26
27
|
m.reply_to = to_email(mail.reply_to)
|
@@ -28,7 +29,7 @@ module SendGridActionMailer
|
|
28
29
|
end
|
29
30
|
|
30
31
|
add_personalizations(sendgrid_mail, mail)
|
31
|
-
|
32
|
+
add_options(sendgrid_mail, mail)
|
32
33
|
add_content(sendgrid_mail, mail)
|
33
34
|
add_send_options(sendgrid_mail, mail)
|
34
35
|
add_mail_settings(sendgrid_mail, mail)
|
@@ -45,8 +46,14 @@ module SendGridActionMailer
|
|
45
46
|
|
46
47
|
private
|
47
48
|
|
49
|
+
def client_options
|
50
|
+
options.dup
|
51
|
+
.select { |key, value| key.to_s.match(/(api_key|host|request_headers|version|impersonate_subuser)/) }
|
52
|
+
.merge(http_options: settings.fetch(:http_options, {}))
|
53
|
+
end
|
54
|
+
|
48
55
|
def client
|
49
|
-
@client = SendGrid::API.new(
|
56
|
+
@client = SendGrid::API.new(**client_options).client
|
50
57
|
end
|
51
58
|
|
52
59
|
# type should be either :plain or :html
|
@@ -146,10 +153,10 @@ module SendGridActionMailer
|
|
146
153
|
content_disp.disposition_type
|
147
154
|
end
|
148
155
|
|
149
|
-
def
|
150
|
-
self.
|
151
|
-
if mail['delivery-method-options']
|
152
|
-
self.
|
156
|
+
def add_options(sendgrid_mail, mail)
|
157
|
+
self.options.merge!(**self.class.transform_keys(self.settings, &:to_sym))
|
158
|
+
if !!(mail['delivery-method-options'])
|
159
|
+
self.options.merge!(**self.class.transform_keys(mail['delivery-method-options'].unparsed_value , &:to_sym))
|
153
160
|
end
|
154
161
|
end
|
155
162
|
|
@@ -286,9 +293,7 @@ module SendGridActionMailer
|
|
286
293
|
result = client.mail._('send').post(request_body: email.to_json) # ლ(ಠ益ಠლ) that API
|
287
294
|
|
288
295
|
if result.status_code && result.status_code.start_with?('4')
|
289
|
-
|
290
|
-
full_message = "Sendgrid delivery failed with #{result.status_code} #{message}"
|
291
|
-
|
296
|
+
full_message = "Sendgrid delivery failed with #{result.status_code}: #{result.body}"
|
292
297
|
settings[:raise_delivery_errors] ? raise(SendgridDeliveryError, full_message) : warn(full_message)
|
293
298
|
end
|
294
299
|
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module SendGridActionMailer
|
2
2
|
class Railtie < Rails::Railtie
|
3
3
|
initializer 'sendgrid_actionmailer.add_delivery_method', before: 'action_mailer.set_configs' do
|
4
|
-
|
4
|
+
ActiveSupport.on_load(:action_mailer) do
|
5
|
+
ActionMailer::Base.add_delivery_method(:sendgrid_actionmailer, SendGridActionMailer::DeliveryMethod)
|
6
|
+
end
|
5
7
|
end
|
6
8
|
end
|
7
9
|
end
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
spec.add_dependency 'mail', '~> 2.7'
|
23
|
-
spec.add_dependency 'sendgrid-ruby', '~> 6.
|
23
|
+
spec.add_dependency 'sendgrid-ruby', '~> 6.4'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'appraisal', '~> 2.1.0'
|
26
26
|
spec.add_development_dependency 'bundler'
|
@@ -40,6 +40,11 @@ module SendGridActionMailer
|
|
40
40
|
expect(m.settings[:api_key]).to eq('ABCDEFG')
|
41
41
|
end
|
42
42
|
|
43
|
+
it 'has correct host' do
|
44
|
+
m = DeliveryMethod.new(host: 'example.com')
|
45
|
+
expect(m.settings[:host]).to eq('example.com')
|
46
|
+
end
|
47
|
+
|
43
48
|
it 'default raise_delivery_errors' do
|
44
49
|
m = DeliveryMethod.new()
|
45
50
|
expect(m.settings[:raise_delivery_errors]).to eq(false)
|
@@ -64,6 +69,11 @@ module SendGridActionMailer
|
|
64
69
|
m = DeliveryMethod.new(perform_send_request: false)
|
65
70
|
expect(m.settings[:perform_send_request]).to eq(false)
|
66
71
|
end
|
72
|
+
|
73
|
+
it 'sets http_options' do
|
74
|
+
m = DeliveryMethod.new(http_options: {open_timeout: 40})
|
75
|
+
expect(m.settings[:http_options]).to eq({open_timeout: 40})
|
76
|
+
end
|
67
77
|
end
|
68
78
|
|
69
79
|
describe '#deliver!' do
|
@@ -106,11 +116,11 @@ module SendGridActionMailer
|
|
106
116
|
end
|
107
117
|
|
108
118
|
it 'sets dynamic api_key, but should revert to default settings api_key' do
|
109
|
-
expect(SendGrid::API).to receive(:new).with(api_key: 'key')
|
119
|
+
expect(SendGrid::API).to receive(:new).with(api_key: 'key', http_options: {})
|
110
120
|
mailer.deliver!(default)
|
111
|
-
expect(SendGrid::API).to receive(:new).with(api_key: 'test_key')
|
121
|
+
expect(SendGrid::API).to receive(:new).with(api_key: 'test_key', http_options: {})
|
112
122
|
mailer.deliver!(mail)
|
113
|
-
expect(SendGrid::API).to receive(:new).with(api_key: 'key')
|
123
|
+
expect(SendGrid::API).to receive(:new).with(api_key: 'key', http_options: {})
|
114
124
|
mailer.deliver!(default)
|
115
125
|
end
|
116
126
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sendgrid-actionmailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eddie Zaneski
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-02-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mail
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '6.
|
35
|
+
version: '6.4'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '6.
|
42
|
+
version: '6.4'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: appraisal
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,9 +119,9 @@ executables: []
|
|
119
119
|
extensions: []
|
120
120
|
extra_rdoc_files: []
|
121
121
|
files:
|
122
|
+
- ".github/workflows/ruby.yml"
|
122
123
|
- ".gitignore"
|
123
124
|
- ".rspec"
|
124
|
-
- ".travis.yml"
|
125
125
|
- Appraisals
|
126
126
|
- CHANGELOG.md
|
127
127
|
- Gemfile
|