sendgrid-actionmailer 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20a38e557a4c77001c637d5d94407d99113b9661
4
- data.tar.gz: 2dc48c9d94c830a664cb0105e8ad8d068eca449a
3
+ metadata.gz: 92aceed9d68cf14a3c461fef95478935b2d6abad
4
+ data.tar.gz: cda4360a31bddc4dbc8dd02b1ad6bf96519b1f84
5
5
  SHA512:
6
- metadata.gz: 059add8c5b4fe2d4232ec038c2686b79ec93c8dbeed984bd806b3f61d71e3afeb961ea05181f603b7105ba50eb34709ddb108c3cfc5997d5b66a66d5083c499a
7
- data.tar.gz: c60cf2c4baeeb7468c03cdd6631eeb5b7516a287c88750a2ad7afcc882ae6c81ec59f0c501a811bff046d07c7e7f5b5ca915db223c2431ea9fe992eb06e3b3ae
6
+ metadata.gz: 7687cc4ede183737d615e2892844f1ac538e8b629f74952fd584761a81207c32fdcc44cd031898bc00996edc8a2eb13dbe5c01cbaf4bf951c2f31532d99c553e
7
+ data.tar.gz: e63c5d2236e329ab7b7898875c0d87fa2ffa34565e9b0ddbd58aa70753be615a4ea22a428b20f4e879e9b97cb0ac50209f3b5dfff80a825863a51c084fc1fdfc
data/.travis.yml CHANGED
@@ -11,3 +11,4 @@ before_install:
11
11
  gemfile:
12
12
  - gemfiles/mail_2.5.gemfile
13
13
  - gemfiles/mail_2.6.gemfile
14
+ - gemfiles/mail_2.7.gemfile
data/README.md CHANGED
@@ -24,6 +24,20 @@ Normal ActionMailer usage will now transparently be sent using SendGrid's Web AP
24
24
 
25
25
  ```mail(to: 'example@email.com', subject: 'email subject', body: 'email body')```
26
26
 
27
+ ### Dynamic API Key
28
+
29
+ If you need to send mail for a number of Sendgrid accounts, you can set the API key for these as follows:
30
+
31
+
32
+ ```ruby
33
+ mail(to: 'example@email.com',
34
+ subject: 'email subject',
35
+ body: 'email body',
36
+ delivery_method_options: {
37
+ api_key: 'SENDGRID_API_KEY'
38
+ })
39
+ ```
40
+
27
41
  ## SendGrid Mail Extensions
28
42
 
29
43
  The Mail functionality is extended to include additional attributes provided by the Sendgrid API.
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "mail", "2.7.0"
6
+
7
+ gemspec :path => "../"
@@ -10,10 +10,10 @@ module SendGridActionMailer
10
10
  include SendGrid
11
11
 
12
12
  DEFAULTS = {
13
- raise_delivery_errors: false,
14
- }
13
+ raise_delivery_errors: false
14
+ }.freeze
15
15
 
16
- attr_accessor :settings
16
+ attr_accessor :settings, :api_key
17
17
 
18
18
  def initialize(**params)
19
19
  self.settings = DEFAULTS.merge(params)
@@ -28,6 +28,7 @@ module SendGridActionMailer
28
28
  m.add_personalization(to_personalizations(mail))
29
29
  end
30
30
 
31
+ add_api_key(sendgrid_mail, mail)
31
32
  add_content(sendgrid_mail, mail)
32
33
  add_send_options(sendgrid_mail, mail)
33
34
  add_mail_settings(sendgrid_mail, mail)
@@ -41,7 +42,7 @@ module SendGridActionMailer
41
42
  private
42
43
 
43
44
  def client
44
- @client ||= SendGrid::API.new(api_key: settings.fetch(:api_key)).client
45
+ @client = SendGrid::API.new(api_key: api_key).client
45
46
  end
46
47
 
47
48
  # type should be either :plain or :html
@@ -105,6 +106,13 @@ module SendGridActionMailer
105
106
  content_disp.disposition_type
106
107
  end
107
108
 
109
+ def add_api_key(sendgrid_mail, mail)
110
+ self.api_key = settings.fetch(:api_key)
111
+ if mail['delivery-method-options'] && mail['delivery-method-options'].value.include?('api_key')
112
+ self.api_key = JSON.parse(mail['delivery-method-options'].value.gsub('=>', ':'))['api_key']
113
+ end
114
+ end
115
+
108
116
  def add_content(sendgrid_mail, mail)
109
117
  case mail.mime_type
110
118
  when 'text/plain'
@@ -1,3 +1,3 @@
1
1
  module SendGridActionMailer
2
- VERSION = '2.0.0'.freeze
2
+ VERSION = '2.0.1'.freeze
3
3
  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.5'
23
- spec.add_dependency 'sendgrid-ruby', '~> 5.0'
23
+ spec.add_dependency 'sendgrid-ruby', '~> 5.2'
24
24
 
25
25
  spec.add_development_dependency 'appraisal', '~> 2.1.0'
26
26
  spec.add_development_dependency 'bundler', '~> 1.6'
@@ -59,6 +59,8 @@ module SendGridActionMailer
59
59
 
60
60
  describe '#deliver!' do
61
61
  let(:client) { TestClient.new }
62
+ let(:client_parent) { double(client: client) }
63
+
62
64
  let(:mail) do
63
65
  Mail.new(
64
66
  to: 'test@sendgrid.com',
@@ -71,6 +73,37 @@ module SendGridActionMailer
71
73
  stub_request(:any, 'https://api.sendgrid.com/api/mail.send.json')
72
74
  .to_return(body: {message: 'success'}.to_json, status: 200, headers: {'X-TEST' => 'yes'})
73
75
  allow(SendGrid::Client).to receive(:new).and_return(client)
76
+ allow(SendGrid::API).to receive(:new).and_return(client_parent)
77
+ end
78
+
79
+ context 'with dynamic api_key' do
80
+ let(:default) do
81
+ Mail.new(
82
+ to: 'test@sendgrid.com',
83
+ from: 'taco@cat.limo',
84
+ subject: 'Hello, world!'
85
+ )
86
+ end
87
+
88
+ let(:mail) do
89
+ Mail.new(
90
+ to: 'test@sendgrid.com',
91
+ from: 'taco@cat.limo',
92
+ subject: 'Hello, world!',
93
+ delivery_method_options: {
94
+ api_key: 'test_key'
95
+ }
96
+ )
97
+ end
98
+
99
+ it 'sets dynamic api_key, but should revert to default settings api_key' do
100
+ expect(SendGrid::API).to receive(:new).with(api_key: 'key')
101
+ mailer.deliver!(default)
102
+ expect(SendGrid::API).to receive(:new).with(api_key: 'test_key')
103
+ mailer.deliver!(mail)
104
+ expect(SendGrid::API).to receive(:new).with(api_key: 'key')
105
+ mailer.deliver!(default)
106
+ end
74
107
  end
75
108
 
76
109
  it 'sets to' do
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: 2.0.0
4
+ version: 2.0.1
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: 2018-09-19 00:00:00.000000000 Z
13
+ date: 2018-10-09 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: '5.0'
35
+ version: '5.2'
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: '5.0'
42
+ version: '5.2'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: appraisal
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -130,6 +130,7 @@ files:
130
130
  - Rakefile
131
131
  - gemfiles/mail_2.5.gemfile
132
132
  - gemfiles/mail_2.6.gemfile
133
+ - gemfiles/mail_2.7.gemfile
133
134
  - lib/sendgrid-actionmailer.rb
134
135
  - lib/sendgrid_actionmailer.rb
135
136
  - lib/sendgrid_actionmailer/railtie.rb