postmark 1.0.1 → 1.0.2
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 +7 -0
- data/.travis.yml +3 -0
- data/CHANGELOG.rdoc +5 -0
- data/VERSION +1 -1
- data/lib/postmark.rb +1 -0
- data/lib/postmark/api_client.rb +6 -18
- data/lib/postmark/mail_message_converter.rb +46 -0
- data/lib/postmark/message_extensions/mail.rb +3 -21
- data/lib/postmark/version.rb +1 -1
- data/postmark.gemspec +1 -0
- data/spec/unit/postmark/api_client_spec.rb +7 -2
- data/spec/unit/postmark/mail_message_converter_spec.rb +155 -0
- data/spec/unit/postmark/message_extensions/mail_spec.rb +25 -111
- metadata +21 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1079afd6778085afa9f62fe85bb8e3cc43af05b2
|
4
|
+
data.tar.gz: d3f376703b377cd3ebe1befa1a21f0119888341f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2154a90bdf624d656668b68f347b2c5e75c02fc3130c7edcf39a808fabb8324aa1d232b69224e23120eb32e40191fc364e2cb521777916777647db0217d0697e
|
7
|
+
data.tar.gz: 9206abd5fbef93c472bd2ecd51358b0f0c3512e98d1222ec8f310ee6377231297de1bc9bb5abb950bc6e314c4ca425ae6ce3e6fa6c82f962c75e9b45bed9ab11
|
data/.travis.yml
CHANGED
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
= Changelog
|
2
2
|
|
3
|
+
== 1.0.2
|
4
|
+
|
5
|
+
* Removed metaprogramming executed at runtime. [#37]
|
6
|
+
* Fixed invalid check for a blank recipient. [#38]
|
7
|
+
|
3
8
|
== 1.0.1
|
4
9
|
|
5
10
|
* Fixed an issue causing recipient names to disappear from "To", "Cc" and "Reply-To" headers when using with Mail library.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
data/lib/postmark.rb
CHANGED
@@ -5,6 +5,7 @@ require 'thread' unless defined? Mutex # For Ruby 1.8.7
|
|
5
5
|
require 'postmark/inflector'
|
6
6
|
require 'postmark/helpers/hash_helper'
|
7
7
|
require 'postmark/helpers/message_helper'
|
8
|
+
require 'postmark/mail_message_converter'
|
8
9
|
require 'postmark/bounce'
|
9
10
|
require 'postmark/inbound'
|
10
11
|
require 'postmark/json'
|
data/lib/postmark/api_client.rb
CHANGED
@@ -34,10 +34,10 @@ module Postmark
|
|
34
34
|
data = serialize(message.to_postmark_hash)
|
35
35
|
|
36
36
|
with_retries do
|
37
|
-
take_response_of { http_client.post("email", data) }
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
response, error = take_response_of { http_client.post("email", data) }
|
38
|
+
update_message(message, response)
|
39
|
+
raise error if error
|
40
|
+
format_response(response, true)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -131,21 +131,9 @@ module Postmark
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def take_response_of
|
134
|
-
|
134
|
+
[yield, nil]
|
135
135
|
rescue DeliveryError => e
|
136
|
-
|
137
|
-
raise e
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
def define_singleton_method(name, object)
|
142
|
-
singleton_class = class << object; self; end
|
143
|
-
singleton_class.send(:define_method, name) do |&b|
|
144
|
-
ret = b.call(self) if b
|
145
|
-
yield if block_given?
|
146
|
-
ret
|
147
|
-
end
|
148
|
-
object
|
136
|
+
[e.full_response || {}, e]
|
149
137
|
end
|
150
138
|
|
151
139
|
def format_response(response, compatible = false)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Postmark
|
2
|
+
|
3
|
+
class MailMessageConverter
|
4
|
+
|
5
|
+
def initialize(message)
|
6
|
+
@message = message
|
7
|
+
end
|
8
|
+
|
9
|
+
def run
|
10
|
+
delete_blank_fields(convert)
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def convert
|
16
|
+
headers_part.merge(content_part)
|
17
|
+
end
|
18
|
+
|
19
|
+
def delete_blank_fields(message_hash)
|
20
|
+
message_hash.delete_if { |k, v| v.nil? || v.empty? }
|
21
|
+
end
|
22
|
+
|
23
|
+
def headers_part
|
24
|
+
{
|
25
|
+
'From' => @message['from'].to_s,
|
26
|
+
'To' => @message['to'].to_s,
|
27
|
+
'ReplyTo' => @message['reply_to'].to_s,
|
28
|
+
'Cc' => @message['cc'].to_s,
|
29
|
+
'Bcc' => @message['bcc'].to_s,
|
30
|
+
'Subject' => @message.subject,
|
31
|
+
'Headers' => @message.export_headers,
|
32
|
+
'Tag' => @message.tag.to_s
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def content_part
|
37
|
+
{
|
38
|
+
'Attachments' => @message.export_attachments,
|
39
|
+
'HtmlBody' => @message.body_html,
|
40
|
+
'TextBody' => @message.body_text
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -40,25 +40,7 @@ module Mail
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def to_postmark_hash
|
43
|
-
|
44
|
-
headers = self.export_headers
|
45
|
-
attachments = self.export_attachments
|
46
|
-
|
47
|
-
options["From"] = self['from'].to_s if self.from
|
48
|
-
options["Subject"] = self.subject
|
49
|
-
options["Attachments"] = attachments unless attachments.empty?
|
50
|
-
options["Headers"] = headers if headers.size > 0
|
51
|
-
options["HtmlBody"] = self.body_html
|
52
|
-
options["TextBody"] = self.body_text
|
53
|
-
options["Tag"] = self.tag.to_s if self.tag
|
54
|
-
|
55
|
-
%w(to reply_to cc bcc).each do |field|
|
56
|
-
next unless self.send(field)
|
57
|
-
value = self[field.to_s]
|
58
|
-
options[::Postmark::Inflector.to_postmark(field)] = Array[value].flatten.join(", ")
|
59
|
-
end
|
60
|
-
|
61
|
-
options.delete_if { |k,v| v.nil? || v.empty? }
|
43
|
+
::Postmark::MailMessageConverter.new(self).run
|
62
44
|
end
|
63
45
|
|
64
46
|
protected
|
@@ -79,9 +61,9 @@ module Mail
|
|
79
61
|
date content-type
|
80
62
|
cc bcc
|
81
63
|
subject tag
|
82
|
-
attachment
|
64
|
+
attachment to
|
83
65
|
]
|
84
66
|
end
|
85
67
|
|
86
68
|
end
|
87
|
-
end
|
69
|
+
end
|
data/lib/postmark/version.rb
CHANGED
data/postmark.gemspec
CHANGED
@@ -110,7 +110,7 @@ describe Postmark::ApiClient do
|
|
110
110
|
subject.deliver_message(message)
|
111
111
|
end
|
112
112
|
|
113
|
-
it "
|
113
|
+
it "retries 3 times" do
|
114
114
|
2.times do
|
115
115
|
http_client.should_receive(:post).and_raise(Postmark::InternalServerError)
|
116
116
|
end
|
@@ -118,12 +118,17 @@ describe Postmark::ApiClient do
|
|
118
118
|
expect { subject.deliver_message(message) }.not_to raise_error
|
119
119
|
end
|
120
120
|
|
121
|
-
it "
|
121
|
+
it "retries on timeout" do
|
122
122
|
http_client.should_receive(:post).and_raise(Postmark::TimeoutError)
|
123
123
|
http_client.should_receive(:post)
|
124
124
|
expect { subject.deliver_message(message) }.not_to raise_error
|
125
125
|
end
|
126
126
|
|
127
|
+
it "proxies errors" do
|
128
|
+
http_client.stub(:post).and_raise(Postmark::TimeoutError)
|
129
|
+
expect { subject.deliver_message(message) }.to raise_error(Postmark::TimeoutError)
|
130
|
+
end
|
131
|
+
|
127
132
|
end
|
128
133
|
|
129
134
|
describe "#deliver_messages" do
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Postmark::MailMessageConverter do
|
4
|
+
|
5
|
+
subject { Postmark::MailMessageConverter }
|
6
|
+
|
7
|
+
let(:mail_message) do
|
8
|
+
Mail.new do
|
9
|
+
from "sheldon@bigbangtheory.com"
|
10
|
+
to "lenard@bigbangtheory.com"
|
11
|
+
subject "Hello!"
|
12
|
+
body "Hello Sheldon!"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:mail_html_message) do
|
17
|
+
mail = Mail.new do
|
18
|
+
from "sheldon@bigbangtheory.com"
|
19
|
+
to "lenard@bigbangtheory.com"
|
20
|
+
subject "Hello!"
|
21
|
+
content_type 'text/html; charset=UTF-8'
|
22
|
+
body "<b>Hello Sheldon!</b>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
let(:tagged_mail_message) do
|
28
|
+
Mail.new do
|
29
|
+
from "sheldon@bigbangtheory.com"
|
30
|
+
to "lenard@bigbangtheory.com"
|
31
|
+
subject "Hello!"
|
32
|
+
body "Hello Sheldon!"
|
33
|
+
tag "sheldon"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
let(:mail_message_without_body) do
|
38
|
+
Mail.new do
|
39
|
+
from "sheldon@bigbangtheory.com"
|
40
|
+
to "lenard@bigbangtheory.com"
|
41
|
+
subject "Hello!"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
let(:mail_multipart_message) do
|
46
|
+
mail = Mail.new do
|
47
|
+
from "sheldon@bigbangtheory.com"
|
48
|
+
to "lenard@bigbangtheory.com"
|
49
|
+
subject "Hello!"
|
50
|
+
text_part do
|
51
|
+
body "Hello Sheldon!"
|
52
|
+
end
|
53
|
+
html_part do
|
54
|
+
body "<b>Hello Sheldon!</b>"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
let(:mail_message_with_attachment) do
|
60
|
+
Mail.new do
|
61
|
+
from "sheldon@bigbangtheory.com"
|
62
|
+
to "lenard@bigbangtheory.com"
|
63
|
+
subject "Hello!"
|
64
|
+
body "Hello Sheldon!"
|
65
|
+
add_file empty_gif_path
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
let(:mail_message_with_named_addresses) do
|
70
|
+
Mail.new do
|
71
|
+
from "Sheldon <sheldon@bigbangtheory.com>"
|
72
|
+
to "\"Leonard Hofstadter\" <leonard@bigbangtheory.com>"
|
73
|
+
subject "Hello!"
|
74
|
+
body "Hello Sheldon!"
|
75
|
+
reply_to 'Penny "The Neighbor" <penny@bigbangtheory.com>'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'converts plain text messages correctly' do
|
80
|
+
subject.new(mail_message).run.should == {
|
81
|
+
"From" => "sheldon@bigbangtheory.com",
|
82
|
+
"Subject" => "Hello!",
|
83
|
+
"TextBody" => "Hello Sheldon!",
|
84
|
+
"To" => "lenard@bigbangtheory.com"}
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'converts tagged text messages correctly' do
|
88
|
+
subject.new(tagged_mail_message).run.should == {
|
89
|
+
"From" => "sheldon@bigbangtheory.com",
|
90
|
+
"Subject" => "Hello!",
|
91
|
+
"TextBody" => "Hello Sheldon!",
|
92
|
+
"Tag" => "sheldon",
|
93
|
+
"To"=>"lenard@bigbangtheory.com"}
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'converts plain text messages without body correctly' do
|
97
|
+
subject.new(mail_message_without_body).run.should == {
|
98
|
+
"From" => "sheldon@bigbangtheory.com",
|
99
|
+
"Subject" => "Hello!",
|
100
|
+
"To" => "lenard@bigbangtheory.com"}
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'converts html messages correctly' do
|
104
|
+
subject.new(mail_html_message).run.should == {
|
105
|
+
"From" => "sheldon@bigbangtheory.com",
|
106
|
+
"Subject" => "Hello!",
|
107
|
+
"HtmlBody" => "<b>Hello Sheldon!</b>",
|
108
|
+
"To" => "lenard@bigbangtheory.com"}
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'converts multipart messages correctly' do
|
112
|
+
subject.new(mail_multipart_message).run.should == {
|
113
|
+
"From" => "sheldon@bigbangtheory.com",
|
114
|
+
"Subject" => "Hello!",
|
115
|
+
"HtmlBody" => "<b>Hello Sheldon!</b>",
|
116
|
+
"TextBody" => "Hello Sheldon!",
|
117
|
+
"To" => "lenard@bigbangtheory.com"}
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'converts messages with attachments correctly' do
|
121
|
+
subject.new(mail_message_with_attachment).run.should == {
|
122
|
+
"From" => "sheldon@bigbangtheory.com",
|
123
|
+
"Subject" => "Hello!",
|
124
|
+
"Attachments" => [{"Name"=>"empty.gif",
|
125
|
+
"Content"=>encoded_empty_gif_data,
|
126
|
+
"ContentType"=>"image/gif"}],
|
127
|
+
"TextBody"=>"Hello Sheldon!",
|
128
|
+
"To"=>"lenard@bigbangtheory.com"}
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'converts messages with named addresses correctly' do
|
132
|
+
subject.new(mail_message_with_named_addresses).run.should == {
|
133
|
+
"From" => "Sheldon <sheldon@bigbangtheory.com>",
|
134
|
+
"Subject" => "Hello!",
|
135
|
+
"TextBody" => "Hello Sheldon!",
|
136
|
+
"To" => "Leonard Hofstadter <leonard@bigbangtheory.com>",
|
137
|
+
"ReplyTo" => "\"Penny \\\"The Neighbor\\\"\" <penny@bigbangtheory.com>"
|
138
|
+
}
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'when bcc is empty' do
|
142
|
+
it 'excludes bcc from message' do
|
143
|
+
mail_message.bcc = nil
|
144
|
+
mail_message.to_postmark_hash.keys.should_not include('Bcc')
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context 'when cc is empty' do
|
149
|
+
it 'excludes cc from message' do
|
150
|
+
mail_message.cc = nil
|
151
|
+
mail_message.to_postmark_hash.keys.should_not include('Cc')
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
@@ -14,24 +14,6 @@ describe Mail::Message do
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
let(:tagged_mail_message) do
|
18
|
-
Mail.new do
|
19
|
-
from "sheldon@bigbangtheory.com"
|
20
|
-
to "lenard@bigbangtheory.com"
|
21
|
-
subject "Hello!"
|
22
|
-
body "Hello Sheldon!"
|
23
|
-
tag "sheldon"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
let(:mail_message_without_body) do
|
28
|
-
Mail.new do
|
29
|
-
from "sheldon@bigbangtheory.com"
|
30
|
-
to "lenard@bigbangtheory.com"
|
31
|
-
subject "Hello!"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
17
|
let(:mail_html_message) do
|
36
18
|
mail = Mail.new do
|
37
19
|
from "sheldon@bigbangtheory.com"
|
@@ -42,38 +24,21 @@ describe Mail::Message do
|
|
42
24
|
end
|
43
25
|
end
|
44
26
|
|
45
|
-
let(:
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
Mail.new do
|
61
|
-
from "sheldon@bigbangtheory.com"
|
62
|
-
to "lenard@bigbangtheory.com"
|
63
|
-
subject "Hello!"
|
64
|
-
body "Hello Sheldon!"
|
65
|
-
add_file empty_gif_path
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
let(:mail_message_with_named_addresses) do
|
70
|
-
Mail.new do
|
71
|
-
from "Sheldon <sheldon@bigbangtheory.com>"
|
72
|
-
to "\"Leonard Hofstadter\" <leonard@bigbangtheory.com>"
|
73
|
-
subject "Hello!"
|
74
|
-
body "Hello Sheldon!"
|
75
|
-
reply_to 'Penny "The Neighbor" <penny@bigbangtheory.com>'
|
76
|
-
end
|
27
|
+
let(:mail_message_with_bogus_headers) do
|
28
|
+
mail_message.header['Return-Path'] = 'bounce@wildbit.com'
|
29
|
+
mail_message.header['From'] = 'info@wildbit.com'
|
30
|
+
mail_message.header['Sender'] = 'info@wildbit.com'
|
31
|
+
mail_message.header['Received'] = 'from mta.pstmrk.it ([72.14.252.155]:54907)'
|
32
|
+
mail_message.header['Date'] = 'January 25, 2013 3:30:58 PM PDT'
|
33
|
+
mail_message.header['Content-Type'] = 'application/json'
|
34
|
+
mail_message.header['To'] = 'lenard@bigbangtheory.com'
|
35
|
+
mail_message.header['Cc'] = 'sheldon@bigbangtheory.com'
|
36
|
+
mail_message.header['Bcc'] = 'penny@bigbangtheory.com'
|
37
|
+
mail_message.header['Subject'] = 'You want not to use a bogus header'
|
38
|
+
mail_message.header['Tag'] = 'bogus-tag'
|
39
|
+
mail_message.header['Attachment'] = 'anydatahere'
|
40
|
+
mail_message.header['Allowed-Header'] = 'value'
|
41
|
+
mail_message
|
77
42
|
end
|
78
43
|
|
79
44
|
describe "#html?" do
|
@@ -159,67 +124,16 @@ describe Mail::Message do
|
|
159
124
|
end
|
160
125
|
end
|
161
126
|
|
162
|
-
describe "#
|
163
|
-
|
164
|
-
|
165
|
-
"From" => "sheldon@bigbangtheory.com",
|
166
|
-
"Subject" => "Hello!",
|
167
|
-
"TextBody" => "Hello Sheldon!",
|
168
|
-
"To" => "lenard@bigbangtheory.com"}
|
169
|
-
end
|
170
|
-
|
171
|
-
it 'converts tagged text messages correctly' do
|
172
|
-
tagged_mail_message.to_postmark_hash.should == {
|
173
|
-
"From" => "sheldon@bigbangtheory.com",
|
174
|
-
"Subject" => "Hello!",
|
175
|
-
"TextBody" => "Hello Sheldon!",
|
176
|
-
"Tag" => "sheldon",
|
177
|
-
"To"=>"lenard@bigbangtheory.com"}
|
178
|
-
end
|
179
|
-
|
180
|
-
it 'converts plain text messages without body correctly' do
|
181
|
-
mail_message_without_body.to_postmark_hash.should == {
|
182
|
-
"From" => "sheldon@bigbangtheory.com",
|
183
|
-
"Subject" => "Hello!",
|
184
|
-
"To" => "lenard@bigbangtheory.com"}
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'converts html messages correctly' do
|
188
|
-
mail_html_message.to_postmark_hash.should == {
|
189
|
-
"From" => "sheldon@bigbangtheory.com",
|
190
|
-
"Subject" => "Hello!",
|
191
|
-
"HtmlBody" => "<b>Hello Sheldon!</b>",
|
192
|
-
"To" => "lenard@bigbangtheory.com"}
|
193
|
-
end
|
194
|
-
|
195
|
-
it 'converts multipart messages correctly' do
|
196
|
-
mail_multipart_message.to_postmark_hash.should == {
|
197
|
-
"From" => "sheldon@bigbangtheory.com",
|
198
|
-
"Subject" => "Hello!",
|
199
|
-
"HtmlBody" => "<b>Hello Sheldon!</b>",
|
200
|
-
"TextBody" => "Hello Sheldon!",
|
201
|
-
"To" => "lenard@bigbangtheory.com"}
|
202
|
-
end
|
127
|
+
describe "#export_headers" do
|
128
|
+
let(:headers) { mail_message_with_bogus_headers.export_headers }
|
129
|
+
let(:header_names) { headers.map { |h| h['Name'] } }
|
203
130
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
"Subject" => "Hello!",
|
208
|
-
"Attachments" => [{"Name"=>"empty.gif",
|
209
|
-
"Content"=>encoded_empty_gif_data,
|
210
|
-
"ContentType"=>"image/gif"}],
|
211
|
-
"TextBody"=>"Hello Sheldon!",
|
212
|
-
"To"=>"lenard@bigbangtheory.com"}
|
213
|
-
end
|
131
|
+
specify { header_names.should include('Allowed-Header') }
|
132
|
+
specify { header_names.count.should == 1 }
|
133
|
+
end
|
214
134
|
|
215
|
-
|
216
|
-
|
217
|
-
"From" => "Sheldon <sheldon@bigbangtheory.com>",
|
218
|
-
"Subject" => "Hello!",
|
219
|
-
"TextBody" => "Hello Sheldon!",
|
220
|
-
"To" => "Leonard Hofstadter <leonard@bigbangtheory.com>",
|
221
|
-
"ReplyTo" => "\"Penny \\\"The Neighbor\\\"\" <penny@bigbangtheory.com>"
|
222
|
-
}
|
223
|
-
end
|
135
|
+
describe "#to_postmark_hash" do
|
136
|
+
# See mail_message_converter_spec.rb
|
224
137
|
end
|
225
|
-
|
138
|
+
|
139
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postmark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Petyo Ivanov
|
@@ -11,60 +10,53 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date:
|
13
|
+
date: 2014-01-10 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: rake
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- -
|
19
|
+
- - '>='
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: '0'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- -
|
26
|
+
- - '>='
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: '0'
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: json
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
|
-
- -
|
33
|
+
- - '>='
|
38
34
|
- !ruby/object:Gem::Version
|
39
35
|
version: '0'
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
|
-
- -
|
40
|
+
- - '>='
|
46
41
|
- !ruby/object:Gem::Version
|
47
42
|
version: '0'
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: mail
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
|
-
- -
|
47
|
+
- - '>='
|
54
48
|
- !ruby/object:Gem::Version
|
55
49
|
version: '0'
|
56
50
|
type: :development
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
|
-
- -
|
54
|
+
- - '>='
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: '0'
|
64
57
|
- !ruby/object:Gem::Dependency
|
65
58
|
name: activesupport
|
66
59
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
60
|
requirements:
|
69
61
|
- - ~>
|
70
62
|
- !ruby/object:Gem::Version
|
@@ -72,7 +64,6 @@ dependencies:
|
|
72
64
|
type: :development
|
73
65
|
prerelease: false
|
74
66
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
67
|
requirements:
|
77
68
|
- - ~>
|
78
69
|
- !ruby/object:Gem::Version
|
@@ -80,17 +71,15 @@ dependencies:
|
|
80
71
|
- !ruby/object:Gem::Dependency
|
81
72
|
name: yajl-ruby
|
82
73
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
74
|
requirements:
|
85
|
-
- -
|
75
|
+
- - '>='
|
86
76
|
- !ruby/object:Gem::Version
|
87
77
|
version: '0'
|
88
78
|
type: :development
|
89
79
|
prerelease: false
|
90
80
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
|
-
- -
|
82
|
+
- - '>='
|
94
83
|
- !ruby/object:Gem::Version
|
95
84
|
version: '0'
|
96
85
|
description: Use this gem to send emails through Postmark HTTP API and retrieve info
|
@@ -124,6 +113,7 @@ files:
|
|
124
113
|
- lib/postmark/inbound.rb
|
125
114
|
- lib/postmark/inflector.rb
|
126
115
|
- lib/postmark/json.rb
|
116
|
+
- lib/postmark/mail_message_converter.rb
|
127
117
|
- lib/postmark/message_extensions/mail.rb
|
128
118
|
- lib/postmark/message_extensions/shared.rb
|
129
119
|
- lib/postmark/response_parsers/active_support.rb
|
@@ -147,11 +137,14 @@ files:
|
|
147
137
|
- spec/unit/postmark/inbound_spec.rb
|
148
138
|
- spec/unit/postmark/inflector_spec.rb
|
149
139
|
- spec/unit/postmark/json_spec.rb
|
140
|
+
- spec/unit/postmark/mail_message_converter_spec.rb
|
150
141
|
- spec/unit/postmark/message_extensions/mail_spec.rb
|
151
142
|
- spec/unit/postmark_spec.rb
|
152
143
|
homepage: http://postmarkapp.com
|
153
|
-
licenses:
|
154
|
-
|
144
|
+
licenses:
|
145
|
+
- MIT
|
146
|
+
metadata: {}
|
147
|
+
post_install_message: "\n ==================\n Thanks for installing the postmark
|
155
148
|
gem. If you don't have an account, please\n sign up at http://postmarkapp.com/.\n\n
|
156
149
|
\ Review the README.md for implementation details and examples.\n ==================\n
|
157
150
|
\ "
|
@@ -160,25 +153,20 @@ rdoc_options:
|
|
160
153
|
require_paths:
|
161
154
|
- lib
|
162
155
|
required_ruby_version: !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
156
|
requirements:
|
165
|
-
- -
|
157
|
+
- - '>='
|
166
158
|
- !ruby/object:Gem::Version
|
167
159
|
version: '0'
|
168
|
-
segments:
|
169
|
-
- 0
|
170
|
-
hash: -2741501783398035661
|
171
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
|
-
none: false
|
173
161
|
requirements:
|
174
|
-
- -
|
162
|
+
- - '>='
|
175
163
|
- !ruby/object:Gem::Version
|
176
164
|
version: 1.3.7
|
177
165
|
requirements: []
|
178
166
|
rubyforge_project:
|
179
|
-
rubygems_version:
|
167
|
+
rubygems_version: 2.0.14
|
180
168
|
signing_key:
|
181
|
-
specification_version:
|
169
|
+
specification_version: 4
|
182
170
|
summary: Official Postmark API wrapper.
|
183
171
|
test_files:
|
184
172
|
- spec/data/empty.gif
|
@@ -197,5 +185,6 @@ test_files:
|
|
197
185
|
- spec/unit/postmark/inbound_spec.rb
|
198
186
|
- spec/unit/postmark/inflector_spec.rb
|
199
187
|
- spec/unit/postmark/json_spec.rb
|
188
|
+
- spec/unit/postmark/mail_message_converter_spec.rb
|
200
189
|
- spec/unit/postmark/message_extensions/mail_spec.rb
|
201
190
|
- spec/unit/postmark_spec.rb
|