griddler-mailgun 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/Gemfile +1 -1
- data/lib/griddler/mailgun/adapter.rb +18 -4
- data/lib/griddler/mailgun/version.rb +1 -1
- data/spec/griddler/mailgun/adapter_spec.rb +25 -5
- data/spec/spec_helper.rb +0 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2377ee3b434c8ed1763841a6158052ef0d5cdfcd
|
4
|
+
data.tar.gz: 3138c2e3d6962b70aa89c2df0e262ef74eea0bb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 082e170f993d4f7751361d33f5bb6ff211612ddb6d957675fdda01f8c922d48b88ff3833fa9517de0ff7d90eede0dc53451e9dbf0371ad81237e845a10122fde
|
7
|
+
data.tar.gz: 0a2a0956210186cb7d228f8b6fec99d2d83f37a0a1439d418a90fca09b639ef3f07a444fe8138c47cb286bfa82ba61276373417a4716a90c1a89baa6276f083d
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.2
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Griddler
|
2
2
|
module Mailgun
|
3
3
|
class Adapter
|
4
|
+
attr_reader :params
|
5
|
+
|
4
6
|
def initialize(params)
|
5
7
|
@params = params
|
6
8
|
end
|
@@ -14,17 +16,17 @@ module Griddler
|
|
14
16
|
{
|
15
17
|
to: to_recipients,
|
16
18
|
cc: cc_recipients,
|
19
|
+
bcc: Array.wrap(param_or_header(:Bcc)),
|
17
20
|
from: determine_sender,
|
18
21
|
subject: params[:subject],
|
19
22
|
text: params['body-plain'],
|
20
23
|
html: params['body-html'],
|
21
|
-
attachments: attachment_files
|
24
|
+
attachments: attachment_files,
|
25
|
+
headers: serialized_headers
|
22
26
|
}
|
23
27
|
end
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
attr_reader :params
|
29
|
+
private
|
28
30
|
|
29
31
|
def determine_sender
|
30
32
|
sender = param_or_header(:From)
|
@@ -55,6 +57,18 @@ module Griddler
|
|
55
57
|
ActiveSupport::HashWithIndifferentAccess.new(extracted_headers)
|
56
58
|
end
|
57
59
|
|
60
|
+
def serialized_headers
|
61
|
+
|
62
|
+
# Griddler expects unparsed headers to pass to ActionMailer, which will manually
|
63
|
+
# unfold, split on line-endings, and parse into individual fields.
|
64
|
+
#
|
65
|
+
# Mailgun already provides fully-parsed headers in JSON -- so we're reconstructing
|
66
|
+
# fake headers here for now, until we can find a better way to pass the parsed
|
67
|
+
# headers directly to Griddler
|
68
|
+
|
69
|
+
headers.to_a.collect { |header| "#{header[0]}: #{header[1]}" }.join("\n")
|
70
|
+
end
|
71
|
+
|
58
72
|
def param_or_header(key)
|
59
73
|
if params[key].present?
|
60
74
|
params[key]
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Griddler::Mailgun::Adapter do
|
4
4
|
it 'registers itself with griddler' do
|
5
|
-
Griddler.adapter_registry[:mailgun].
|
5
|
+
expect(Griddler.adapter_registry[:mailgun]).to eq Griddler::Mailgun::Adapter
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
@@ -27,12 +27,12 @@ describe Griddler::Mailgun::Adapter, '.normalize_params' do
|
|
27
27
|
)
|
28
28
|
|
29
29
|
normalized_params = Griddler::Mailgun::Adapter.normalize_params(params)
|
30
|
-
normalized_params[:attachments].
|
30
|
+
expect(normalized_params[:attachments]).to eq [upload_1, upload_2]
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'has no attachments' do
|
34
34
|
normalized_params = Griddler::Mailgun::Adapter.normalize_params(default_params)
|
35
|
-
normalized_params[:attachments].
|
35
|
+
expect(normalized_params[:attachments]).to be_empty
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'gets sender from headers' do
|
@@ -69,6 +69,26 @@ describe Griddler::Mailgun::Adapter, '.normalize_params' do
|
|
69
69
|
expect(normalized_params[:to]).to eq ['johndoe@example.com']
|
70
70
|
end
|
71
71
|
|
72
|
+
it 'handles message-headers' do
|
73
|
+
params = default_params.merge(
|
74
|
+
'message-headers' => '[["NotCc", "emily@example.mailgun.org"], ["Reply-To", "mail2@example.mailgun.org"]]'
|
75
|
+
)
|
76
|
+
normalized_params = Griddler::Mailgun::Adapter.normalize_params(params)
|
77
|
+
email = Griddler::Email.new(normalized_params)
|
78
|
+
expect(email.headers["Reply-To"]).to eq "mail2@example.mailgun.org"
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'adds Bcc when it exists' do
|
82
|
+
params = default_params.merge('Bcc' => 'bcc@example.com')
|
83
|
+
normalized_params = Griddler::Mailgun::Adapter.normalize_params(params)
|
84
|
+
expect(normalized_params[:bcc]).to eq ['bcc@example.com']
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'bcc is empty array when it missing' do
|
88
|
+
normalized_params = Griddler::Mailgun::Adapter.normalize_params(default_params)
|
89
|
+
expect(normalized_params[:bcc]).to eq []
|
90
|
+
end
|
91
|
+
|
72
92
|
def upload_1
|
73
93
|
@upload_1 ||= ActionDispatch::Http::UploadedFile.new(
|
74
94
|
filename: 'photo1.jpg',
|
@@ -100,7 +120,7 @@ describe Griddler::Mailgun::Adapter, '.normalize_params' do
|
|
100
120
|
end
|
101
121
|
|
102
122
|
def short_params
|
103
|
-
|
123
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
104
124
|
{
|
105
125
|
"from" => "Jon Snow <jon@example.com>",
|
106
126
|
"recipient" => "johndoe@example.com",
|
@@ -110,7 +130,7 @@ describe Griddler::Mailgun::Adapter, '.normalize_params' do
|
|
110
130
|
end
|
111
131
|
|
112
132
|
def default_params
|
113
|
-
|
133
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
114
134
|
{
|
115
135
|
"Cc"=>"Brandon Stark <brandon@example.com>, Arya Stark <arya@example.com>",
|
116
136
|
"From"=>"Jon Snow <jon@example.com>",
|
data/spec/spec_helper.rb
CHANGED
@@ -5,7 +5,6 @@ require 'active_support/core_ext/string'
|
|
5
5
|
require 'active_support/core_ext/hash'
|
6
6
|
|
7
7
|
RSpec.configure do |config|
|
8
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
8
|
config.run_all_when_everything_filtered = true
|
10
9
|
config.order = 'random'
|
11
10
|
config.include Griddler::Testing
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: griddler-mailgun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Pauly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -103,3 +103,4 @@ test_files:
|
|
103
103
|
- spec/fixtures/photo2.jpg
|
104
104
|
- spec/griddler/mailgun/adapter_spec.rb
|
105
105
|
- spec/spec_helper.rb
|
106
|
+
has_rdoc:
|