postageapp 1.3.0 → 1.4.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 +5 -5
- data/.gitignore +6 -0
- data/.travis.yml +9 -39
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +117 -13
- data/Rakefile +15 -4
- data/VERSION +1 -0
- data/app/ingresses/action_mailbox/ingresses/postage_app/inbound_emails_controller.rb +52 -0
- data/app/ingresses/action_mailbox/ingresses/postage_app.rb +4 -0
- data/config/routes.rb +8 -0
- data/exe/postageapp +37 -0
- data/lib/generators/postageapp/postageapp_generator.rb +9 -6
- data/lib/postageapp/cli/command/config.rb +74 -0
- data/lib/postageapp/cli/command/create_mailbox.rb +21 -0
- data/lib/postageapp/cli/command/env.rb +58 -0
- data/lib/postageapp/cli/command/get_project_info.rb +3 -0
- data/lib/postageapp/cli/command.rb +110 -0
- data/lib/postageapp/cli.rb +14 -0
- data/lib/postageapp/configuration.rb +237 -74
- data/lib/postageapp/engine.rb +11 -0
- data/lib/postageapp/env.rb +9 -0
- data/lib/postageapp/mailer/mailer_4.rb +30 -14
- data/lib/postageapp/mailer.rb +1 -11
- data/lib/postageapp/rails/railtie.rb +1 -3
- data/lib/postageapp/request.rb +6 -1
- data/lib/postageapp.rb +53 -35
- data/log/.gitignore +1 -0
- data/postageapp.gemspec +7 -10
- data/script/with +2 -2
- data/test/gemfiles/Gemfile.rails-2.3.x +1 -1
- data/test/gemfiles/Gemfile.rails-3.0.x +1 -1
- data/test/gemfiles/Gemfile.rails-3.1.x +1 -1
- data/test/gemfiles/Gemfile.rails-3.2.x +1 -1
- data/test/gemfiles/Gemfile.rails-4.0.x +1 -1
- data/test/gemfiles/Gemfile.rails-4.1.x +1 -1
- data/test/gemfiles/Gemfile.rails-4.2.x +1 -2
- data/test/gemfiles/Gemfile.rails-5.0.x +2 -3
- data/test/gemfiles/Gemfile.rails-5.2.x +12 -0
- data/test/gemfiles/Gemfile.rails-6.0.x +12 -0
- data/test/gemfiles/Gemfile.rails-6.1.x +12 -0
- data/test/gemfiles/Gemfile.ruby +2 -3
- data/test/helper.rb +5 -3
- data/test/log/.gitignore +1 -0
- data/test/mailer/action_mailer_3/notifier.rb +1 -1
- data/test/tmp/.gitignore +1 -0
- data/test/travis_test.rb +58 -40
- data/test/{configuration_test.rb → unit/configuration_test.rb} +18 -12
- data/test/{failed_request_test.rb → unit/failed_request_test.rb} +6 -6
- data/test/{live_test.rb → unit/live_test.rb} +4 -39
- data/test/{mail_delivery_method_test.rb → unit/mail_delivery_method_test.rb} +1 -1
- data/test/{mailer_4_test.rb → unit/mailer_4_test.rb} +2 -2
- data/test/{mailer_helper_methods_test.rb → unit/mailer_helper_methods_test.rb} +4 -4
- data/test/{postageapp_test.rb → unit/postageapp_test.rb} +7 -1
- data/test/{rails_initialization_test.rb → unit/rails_initialization_test.rb} +2 -2
- data/test/{request_test.rb → unit/request_test.rb} +18 -17
- data/test/{response_test.rb → unit/response_test.rb} +4 -4
- data/test/unit/tmp/.gitignore +1 -0
- data/tmp/.gitignore +1 -0
- metadata +41 -48
- data/lib/postageapp/mailer/mailer_2.rb +0 -140
- data/lib/postageapp/mailer/mailer_3.rb +0 -190
- data/lib/postageapp/version.rb +0 -3
- data/test/mailer/action_mailer_2/notifier/with_body_and_attachment.erb +0 -1
- data/test/mailer/action_mailer_2/notifier/with_custom_postage_variables.text.html.erb +0 -1
- data/test/mailer/action_mailer_2/notifier/with_custom_postage_variables.text.plain.erb +0 -1
- data/test/mailer/action_mailer_2/notifier/with_html_and_text_views.text.html.erb +0 -1
- data/test/mailer/action_mailer_2/notifier/with_html_and_text_views.text.plain.erb +0 -1
- data/test/mailer/action_mailer_2/notifier/with_simple_view.erb +0 -1
- data/test/mailer/action_mailer_2/notifier/with_text_only_view.text.plain.erb +0 -1
- data/test/mailer/action_mailer_2/notifier.rb +0 -77
- data/test/mailer_2_test.rb +0 -95
- data/test/mailer_3_test.rb +0 -118
@@ -24,7 +24,7 @@
|
|
24
24
|
# Sending email
|
25
25
|
#
|
26
26
|
# # Create a PostageApp::Request object
|
27
|
-
# request = Notifier.signup_notification(user)
|
27
|
+
# request = Notifier.signup_notification(user)
|
28
28
|
# # Deliver the message and return a PostageApp::Response
|
29
29
|
# response = request.deliver_now
|
30
30
|
|
@@ -156,7 +156,7 @@ class PostageApp::Mailer < ActionMailer::Base
|
|
156
156
|
:template_name,
|
157
157
|
:template_path
|
158
158
|
)
|
159
|
-
|
159
|
+
|
160
160
|
m.headers.merge!(assignable)
|
161
161
|
|
162
162
|
# Render the templates and blocks
|
@@ -166,13 +166,29 @@ class PostageApp::Mailer < ActionMailer::Base
|
|
166
166
|
m
|
167
167
|
end
|
168
168
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
169
|
+
def find_first_mime_type(mt)
|
170
|
+
part = arguments['content'].detect{ |mime_type, body| mime_type == mt }
|
171
|
+
|
172
|
+
OpenStruct.new(mime_type: part[0], decoded: part[1]) if part
|
173
|
+
end
|
174
|
+
|
175
|
+
def header
|
176
|
+
@_message.arguments['headers']
|
177
|
+
end
|
178
|
+
|
179
|
+
def reply_to
|
180
|
+
@_message.arguments.dig('headers', 'reply_to')
|
181
|
+
end
|
182
|
+
|
183
|
+
def cc
|
184
|
+
@_message.arguments.dig('headers', 'cc')
|
185
|
+
end
|
186
|
+
|
187
|
+
def multipart?
|
188
|
+
%w[ text/plain text/html ].all? { |mt| arguments['content'].key?(mt) }
|
174
189
|
end
|
175
190
|
|
191
|
+
protected
|
176
192
|
def create_parts_from_responses(m, responses) #:nodoc:
|
177
193
|
content = m.arguments['content'] ||= { }
|
178
194
|
|
@@ -198,17 +214,17 @@ class PostageApp::Request
|
|
198
214
|
def deliver_now
|
199
215
|
inform_interceptors
|
200
216
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
217
|
+
return unless (perform_deliveries)
|
218
|
+
|
219
|
+
if (@delivery_method == Mail::TestMailer)
|
220
|
+
@delivery_method.deliveries << self
|
221
|
+
else
|
222
|
+
self.send
|
207
223
|
end
|
208
224
|
end
|
209
225
|
alias_method :deliver, :deliver_now
|
210
226
|
|
211
|
-
#
|
227
|
+
# Allows overriding the delivery method setting
|
212
228
|
def delivery_method(method = nil, settings = nil)
|
213
229
|
@delivery_method = method
|
214
230
|
end
|
data/lib/postageapp/mailer.rb
CHANGED
@@ -8,15 +8,5 @@ rescue LoadError
|
|
8
8
|
end
|
9
9
|
|
10
10
|
if (defined?(ActionMailer))
|
11
|
-
|
12
|
-
# currently installed on the system. Assuming we're dealing only with
|
13
|
-
# ones that come with Rails 2 and 3
|
14
|
-
case (ActionMailer::VERSION::MAJOR)
|
15
|
-
when 3
|
16
|
-
require File.expand_path('mailer/mailer_3', File.dirname(__FILE__))
|
17
|
-
when 2
|
18
|
-
require File.expand_path('mailer/mailer_2', File.dirname(__FILE__))
|
19
|
-
else
|
20
|
-
require File.expand_path('mailer/mailer_4', File.dirname(__FILE__))
|
21
|
-
end
|
11
|
+
require_relative './mailer/mailer_4'
|
22
12
|
end
|
data/lib/postageapp/request.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class PostageApp::Request
|
2
2
|
# == Constants ============================================================
|
3
3
|
|
4
|
-
API_VERSION = '1.
|
4
|
+
API_VERSION = '1.1'
|
5
5
|
|
6
6
|
HEADERS_DEFAULT = {
|
7
7
|
'Content-type' => 'application/json',
|
@@ -54,6 +54,11 @@ class PostageApp::Request
|
|
54
54
|
http = PostageApp.configuration.http
|
55
55
|
|
56
56
|
PostageApp.logger.info(self)
|
57
|
+
|
58
|
+
if (ENV['DEBUG'])
|
59
|
+
puts "// #{url}"
|
60
|
+
puts JSON.pretty_generate(self.arguments_to_send)
|
61
|
+
end
|
57
62
|
|
58
63
|
http_response =
|
59
64
|
begin
|
data/lib/postageapp.rb
CHANGED
@@ -9,70 +9,88 @@ require 'base64'
|
|
9
9
|
|
10
10
|
module PostageApp
|
11
11
|
class Error < StandardError ; end
|
12
|
-
|
12
|
+
|
13
13
|
# Call this method to modify your configuration
|
14
14
|
# Example:
|
15
15
|
# PostageApp.configure do |config|
|
16
|
-
# config.api_key
|
17
|
-
#
|
16
|
+
# config.api_key = '1234567890abcdef'
|
17
|
+
#
|
18
|
+
# if Rails.env.staging?
|
19
|
+
# config.recipient_override = 'test@test.test'
|
20
|
+
# end
|
18
21
|
# end
|
19
|
-
#
|
22
|
+
#
|
20
23
|
# If you do not want/need to initialize the gem in this way, you can use the environment
|
21
24
|
# variable POSTAGEAPP_API_KEY to set up your key.
|
22
|
-
|
23
|
-
|
25
|
+
|
26
|
+
VERSION = File.read(File.expand_path('../VERSION', __dir__)).gsub(/\s/, '')
|
27
|
+
|
28
|
+
def self.version
|
29
|
+
VERSION
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.configure(reset: false)
|
24
33
|
if (reset)
|
25
|
-
self.
|
34
|
+
self.config_reset!
|
26
35
|
end
|
27
36
|
|
28
|
-
yield(self.
|
37
|
+
yield(self.config)
|
29
38
|
end
|
30
|
-
|
39
|
+
|
31
40
|
# Accessor for the PostageApp::Configuration object
|
32
41
|
# Example use:
|
33
42
|
# PostageApp.configuration.api_key = '1234567890abcdef'
|
34
|
-
def self.
|
35
|
-
@
|
43
|
+
def self.config
|
44
|
+
@config ||= Configuration.new
|
36
45
|
end
|
37
46
|
|
38
|
-
def self.
|
39
|
-
@
|
47
|
+
def self.config_reset!
|
48
|
+
@config = nil
|
40
49
|
end
|
41
50
|
|
42
51
|
class << self
|
43
|
-
|
52
|
+
alias_method :configuration_reset!, :config_reset!
|
53
|
+
alias_method :configuration, :config
|
44
54
|
end
|
45
|
-
|
55
|
+
|
46
56
|
# Logger for the plugin
|
47
57
|
def self.logger
|
48
58
|
@logger ||= begin
|
49
|
-
|
50
|
-
if (
|
51
|
-
FileUtils.mkdir_p(File.join(File.expand_path(
|
52
|
-
File.join(
|
59
|
+
config.logger || PostageApp::Logger.new(
|
60
|
+
if (config.project_root)
|
61
|
+
FileUtils.mkdir_p(File.join(File.expand_path(config.project_root), 'log'))
|
62
|
+
File.join(config.project_root, "log/postageapp_#{config.environment}.log")
|
53
63
|
else
|
54
|
-
|
64
|
+
$stdout
|
55
65
|
end
|
56
66
|
)
|
57
67
|
end
|
58
68
|
end
|
59
69
|
end
|
60
70
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
require 'postageapp/
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
require_relative './postageapp/env'
|
72
|
+
|
73
|
+
if (PostageApp::Env.rails?)
|
74
|
+
require_relative './postageapp/engine'
|
75
|
+
# require 'postageapp/ingresses/postage_app'
|
76
|
+
end
|
77
|
+
|
78
|
+
require_relative './postageapp/configuration'
|
79
|
+
require_relative './postageapp/diagnostics'
|
80
|
+
require_relative './postageapp/failed_request'
|
81
|
+
require_relative './postageapp/http'
|
82
|
+
require_relative './postageapp/logger'
|
83
|
+
require_relative './postageapp/request'
|
84
|
+
require_relative './postageapp/response'
|
85
|
+
require_relative './postageapp/mail'
|
86
|
+
require_relative './postageapp/mail/delivery_method'
|
87
|
+
require_relative './postageapp/utils'
|
88
|
+
|
89
|
+
if (defined?(Rails::Railtie))
|
90
|
+
require_relative './postageapp/rails/railtie'
|
91
|
+
end
|
92
|
+
|
93
|
+
require_relative './postageapp/mail/extensions'
|
76
94
|
|
77
95
|
if (defined?(::Mail))
|
78
96
|
PostageApp::Mail::Extensions.install!
|
data/log/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*
|
data/postageapp.gemspec
CHANGED
@@ -1,34 +1,31 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
$LOAD_PATH.unshift(File.expand_path('
|
4
|
-
|
5
|
-
require 'postageapp/version'
|
3
|
+
$LOAD_PATH.unshift(File.expand_path('./lib', __dir__))
|
6
4
|
|
7
5
|
Gem::Specification.new do |s|
|
8
6
|
s.name = 'postageapp'
|
9
|
-
s.version =
|
7
|
+
s.version = File.read(File.expand_path('VERSION', __dir__)).gsub(/\s/, '')
|
10
8
|
s.authors = [
|
11
9
|
'Scott Tadman',
|
12
10
|
'Oleg Khabarov',
|
13
|
-
'
|
11
|
+
'PostageApp Ltd.'
|
14
12
|
]
|
15
13
|
s.email = [
|
16
14
|
'tadman@postageapp.com',
|
17
15
|
'oleg@khabarov.ca'
|
18
16
|
]
|
19
17
|
|
20
|
-
s.homepage = '
|
18
|
+
s.homepage = 'https://github.com/postageapp/postageapp-ruby'
|
21
19
|
|
22
20
|
s.summary = 'Client library for PostageApp Email API'
|
23
21
|
s.description = 'PostageApp Library for Ruby and Ruby on Rails applications'
|
24
22
|
s.license = 'MIT'
|
25
|
-
|
23
|
+
|
26
24
|
s.files = `git ls-files`.split("\n")
|
27
25
|
s.platform = Gem::Platform::RUBY
|
28
26
|
s.require_paths = [ 'lib' ]
|
29
27
|
|
30
|
-
s.required_ruby_version = '>=
|
31
|
-
|
32
|
-
s.add_dependency 'json', '~> 1.8'
|
28
|
+
s.required_ruby_version = '>= 2.5.0'
|
29
|
+
|
33
30
|
s.add_dependency 'mail', '~> 2.4'
|
34
31
|
end
|
data/script/with
CHANGED
@@ -20,8 +20,8 @@
|
|
20
20
|
|
21
21
|
# == Constants ==============================================================
|
22
22
|
|
23
|
-
GEMFILE_DIR = File.expand_path('../test/gemfiles',
|
24
|
-
GEMFILE_ROOT = File.expand_path('../Gemfile',
|
23
|
+
GEMFILE_DIR = File.expand_path('../test/gemfiles', __dir__)
|
24
|
+
GEMFILE_ROOT = File.expand_path('../Gemfile', __dir__)
|
25
25
|
|
26
26
|
# == Support Methods ========================================================
|
27
27
|
|