postmark 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -1,4 +1,7 @@
1
1
  language: ruby
2
+ before_install:
3
+ - gem update --system 2.1.11
4
+ - gem --version
2
5
  rvm:
3
6
  - "1.8.7"
4
7
  - "1.9.2"
@@ -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
+ 1.0.2
@@ -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'
@@ -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) }.to do |response|
38
- update_message(message, response)
39
- format_response response, true
40
- end
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
- define_singleton_method(:to, yield)
134
+ [yield, nil]
135
135
  rescue DeliveryError => e
136
- define_singleton_method(:to, e.full_response || {}) do
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
- options = Hash.new
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
@@ -1,3 +1,3 @@
1
1
  module Postmark
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -7,6 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Postmark::VERSION
8
8
  s.homepage = "http://postmarkapp.com"
9
9
  s.platform = Gem::Platform::RUBY
10
+ s.license = 'MIT'
10
11
 
11
12
  s.authors = ["Petyo Ivanov", "Ilya Sabanin", "Artem Chistyakov"]
12
13
  s.email = "ilya@wildbit.com"
@@ -110,7 +110,7 @@ describe Postmark::ApiClient do
110
110
  subject.deliver_message(message)
111
111
  end
112
112
 
113
- it "should retry 3 times" do
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 "should retry on timeout" do
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(: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
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 "#to_postmark_hash" do
163
- it 'converts plain text messages correctly' do
164
- mail_message.to_postmark_hash.should == {
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
- it 'converts messages with attachments correctly' do
205
- mail_message_with_attachment.to_postmark_hash.should == {
206
- "From" => "sheldon@bigbangtheory.com",
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
- it 'converts messages with named addresses correctly' do
216
- mail_message_with_named_addresses.to_postmark_hash.should == {
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
- end
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.1
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: 2013-07-19 00:00:00.000000000 Z
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
- post_install_message: ! "\n ==================\n Thanks for installing the postmark
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: 1.8.25
167
+ rubygems_version: 2.0.14
180
168
  signing_key:
181
- specification_version: 3
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