simple_postmark 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []