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.
@@ -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