simple_postmark 0.1

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,14 @@
1
+ require 'active_support/core_ext/object/blank'
2
+ require 'active_support/inflector/methods'
3
+ require 'json'
4
+ require 'mail'
5
+ require 'typhoeus'
6
+
7
+ module SimplePostmark
8
+ require 'simple_postmark/mail_ext/message'
9
+ require 'simple_postmark/mail_ext/part'
10
+
11
+ require 'simple_postmark/delivery_method'
12
+
13
+ require 'simple_postmark/railtie' if defined?(Rails)
14
+ end
@@ -0,0 +1,20 @@
1
+ module Mail
2
+ class SimplePostmark
3
+ def initialize(values)
4
+ self.settings = { api_key: '********-****-****-****-************' }.merge!(values)
5
+ end
6
+
7
+ attr_accessor :settings
8
+
9
+ def deliver!(mail)
10
+ headers = {
11
+ 'Accept' => 'application/json',
12
+ 'ContentType' => 'application/json',
13
+ 'X-Postmark-Server-Token' => settings[:api_key].to_s
14
+ }
15
+ body = mail.to_postmark.to_json
16
+
17
+ Typhoeus::Request.post('http://api.postmarkapp.com/email', headers: headers, body: body)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ module Mail
2
+ class Message
3
+ def tag(val = nil)
4
+ default(:tag, val)
5
+ end
6
+
7
+ def tag=(val)
8
+ header[:tag] = val
9
+ end
10
+
11
+ def to_postmark
12
+ {}.tap do |hash|
13
+ %w[bcc cc from html_body reply_to subject tag text_body to].each do |key|
14
+ value = send(key).presence or next
15
+ hash[key.camelcase] = value.respond_to?(:join) ? value.join(', ') : value.to_s
16
+ end
17
+ hash['Attachments'] = attachments.map(&:to_postmark) if has_attachments?
18
+ end
19
+ end
20
+
21
+ private
22
+ def html_body
23
+ html_part.present? ? html_part.to_postmark['Content'] : content_type && content_type.include?('text/html') ? body : nil
24
+ end
25
+
26
+ def text_body
27
+ text_part.present? ? text_part.to_postmark['Content'] : body
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ module Mail
2
+ class Part
3
+ def to_postmark
4
+ {}.tap do |hash|
5
+ hash['Content'] = attachment? ? [read].pack('m') : body.to_s
6
+ hash['ContentType'] = mime_type
7
+ hash['Name'] = filename
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module SimplePostmark
2
+ class Railtie < ::Rails::Railtie
3
+ ActionMailer::Base.add_delivery_method(:simple_postmark, Mail::SimplePostmark, :api_key => nil)
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_postmark
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mario Uher
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-20 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &70281926463580 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70281926463580
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &70281926463060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70281926463060
36
+ - !ruby/object:Gem::Dependency
37
+ name: mail
38
+ requirement: &70281926462480 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70281926462480
47
+ - !ruby/object:Gem::Dependency
48
+ name: typhoeus
49
+ requirement: &70281926461960 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70281926461960
58
+ - !ruby/object:Gem::Dependency
59
+ name: growl
60
+ requirement: &70281926461480 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70281926461480
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: &70281926461000 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70281926461000
80
+ - !ruby/object:Gem::Dependency
81
+ name: guard-bundler
82
+ requirement: &70281926460480 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70281926460480
91
+ - !ruby/object:Gem::Dependency
92
+ name: guard-minitest
93
+ requirement: &70281926459960 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70281926459960
102
+ - !ruby/object:Gem::Dependency
103
+ name: minitest
104
+ requirement: &70281926459440 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70281926459440
113
+ - !ruby/object:Gem::Dependency
114
+ name: webmock
115
+ requirement: &70281926458920 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70281926458920
124
+ description: SimplePostmark makes it easy to send mails via Postmark™ using Rails
125
+ 3's ActionMailer.
126
+ email: uher.mario@gmail.com
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - lib/simple_postmark/delivery_method.rb
132
+ - lib/simple_postmark/mail_ext/message.rb
133
+ - lib/simple_postmark/mail_ext/part.rb
134
+ - lib/simple_postmark/railtie.rb
135
+ - lib/simple_postmark.rb
136
+ homepage: https://www.github.com/haihappen/simple_postmark
137
+ licenses: []
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 1.8.7
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: A simple way to use Postmark™ with your Rails app.
160
+ test_files: []