postageapp 1.0.21 → 1.0.22
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 +7 -0
- data/lib/postageapp/mailer/mailer_3.rb +28 -29
- data/lib/postageapp/mailer/mailer_4.rb +0 -1
- data/lib/postageapp/version.rb +1 -1
- data/test/gemfiles/Gemfile.rails-4.0.x +1 -1
- data/test/mailer/action_mailer_3/notifier.rb +20 -14
- data/test/mailer_3_test.rb +5 -0
- data/test/mailer_4_test.rb +5 -0
- metadata +9 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6380fa116f59e249ad1fce5897f34d160708caef
|
4
|
+
data.tar.gz: 87c9ee3959cc3d6f1b2b68a22b74e8367dfa89b5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 280c702bde5cd63bf66c9b05fd8beac698cf9e2ad201416bc1ee542e122048d971ddf0b0c4aaf1b4bc512a874e4b1f9b6910253af8eab413486ef128c7aac67f
|
7
|
+
data.tar.gz: 0eb12f766ca5cc385e88ffb5aceacd4d10469ba920541fcdac36f6f0fdcccb234c689aa52523f055691755e1a28bae74418185055820f02b2ca2f3396016fb0d
|
@@ -3,9 +3,9 @@
|
|
3
3
|
# to PostageApp::Mailer. Also don't forget to require 'postageapp/mailer'
|
4
4
|
#
|
5
5
|
# Here's an example of a valid PostageApp::Mailer class
|
6
|
-
#
|
6
|
+
#
|
7
7
|
# require 'postageapp/mailer'
|
8
|
-
#
|
8
|
+
#
|
9
9
|
# class Notifier < PostageApp::Mailer
|
10
10
|
# def signup_notification(recipient)
|
11
11
|
# mail(
|
@@ -27,7 +27,7 @@
|
|
27
27
|
# response = request.deliver # attempts to deliver the message and creates a PostageApp::Response
|
28
28
|
#
|
29
29
|
class PostageApp::Mailer < ActionMailer::Base
|
30
|
-
|
30
|
+
|
31
31
|
# Wrapper for creating attachments
|
32
32
|
# Attachments sent to PostageApp are in the following format:
|
33
33
|
# 'filename.ext' => {
|
@@ -35,12 +35,12 @@ class PostageApp::Mailer < ActionMailer::Base
|
|
35
35
|
# 'content' => 'base64_encoded_content'
|
36
36
|
# }
|
37
37
|
class Attachments < Hash
|
38
|
-
|
38
|
+
|
39
39
|
def initialize(message)
|
40
40
|
@_message = message
|
41
41
|
message.arguments['attachments'] ||= { }
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def []=(filename, attachment)
|
45
45
|
default_content_type = MIME::Types.type_for(filename).first.content_type rescue ''
|
46
46
|
if attachment.is_a?(Hash)
|
@@ -56,81 +56,80 @@ class PostageApp::Mailer < ActionMailer::Base
|
|
56
56
|
}
|
57
57
|
end
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
# Instead of initializing Mail object, we prepare PostageApp::Request
|
61
61
|
def initialize(method_name = nil, *args)
|
62
62
|
super()
|
63
63
|
@_message = PostageApp::Request.new(:send_message)
|
64
64
|
process(method_name, *args) if method_name
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
# Possible to define custom uid. Should be sufficiently unique
|
68
68
|
def postageapp_uid(value = nil)
|
69
69
|
value ? @_message.uid = value : @_message.uid
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
def postageapp_api_key(value = nil)
|
73
73
|
value ? @_message.api_key = value : @_message.api_key
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
# In API call we can specify PostageApp template that will be used
|
77
77
|
# to generate content of the message
|
78
78
|
def postageapp_template(value = nil)
|
79
79
|
value ? @_message.arguments['template'] = value : @_message.arguments['template']
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
# Hash of variables that will be used to inject into the content
|
83
83
|
def postageapp_variables(value = nil)
|
84
84
|
value ? @_message.arguments['variables'] = value : @_message.arguments['variables']
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
def attachments
|
88
88
|
@_attachments ||= Attachments.new(@_message)
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
91
|
# Override for headers assignment
|
92
92
|
def headers(args=nil)
|
93
93
|
@_message.headers(args)
|
94
94
|
end
|
95
|
-
|
96
|
-
# Overriding method that prepares Mail object. This time we'll be
|
95
|
+
|
96
|
+
# Overriding method that prepares Mail object. This time we'll be
|
97
97
|
# contructing PostageApp::Request payload.
|
98
98
|
def mail(headers = {}, &block)
|
99
99
|
# Guard flag to prevent both the old and the new API from firing
|
100
100
|
# Should be removed when old API is removed
|
101
101
|
@mail_was_called = true
|
102
102
|
m = @_message
|
103
|
-
|
103
|
+
|
104
104
|
# At the beginning, do not consider class default for parts order neither content_type
|
105
105
|
content_type = headers[:content_type]
|
106
106
|
parts_order = headers[:parts_order]
|
107
|
-
|
107
|
+
|
108
108
|
# Call all the procs (if any)
|
109
109
|
default_values = self.class.default.merge(self.class.default) do |k,v|
|
110
110
|
v.respond_to?(:call) ? v.bind(self).call : v
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
# Handle defaults
|
114
114
|
headers = headers.reverse_merge(default_values)
|
115
|
-
|
116
|
-
|
115
|
+
|
117
116
|
# Set configure delivery behavior
|
118
117
|
wrap_delivery_behavior!(headers.delete(:delivery_method))
|
119
|
-
|
118
|
+
|
120
119
|
# Assigning recipients
|
121
120
|
m.arguments['recipients'] = headers.delete(:to)
|
122
|
-
|
121
|
+
|
123
122
|
# Assign all headers except parts_order, content_type and body
|
124
123
|
assignable = headers.except(:parts_order, :content_type, :body, :template_name, :template_path)
|
125
124
|
m.headers.merge!(assignable)
|
126
|
-
|
125
|
+
|
127
126
|
# Render the templates and blocks
|
128
127
|
responses, explicit_order = collect_responses_and_parts_order(headers, &block)
|
129
128
|
create_parts_from_responses(m, responses)
|
130
|
-
|
129
|
+
|
131
130
|
m
|
132
131
|
end
|
133
|
-
|
132
|
+
|
134
133
|
protected
|
135
134
|
|
136
135
|
def create_parts_from_responses(m, responses) #:nodoc:
|
@@ -139,16 +138,16 @@ protected
|
|
139
138
|
content[part[:content_type]] = part[:body]
|
140
139
|
end
|
141
140
|
end
|
142
|
-
|
141
|
+
|
143
142
|
end
|
144
143
|
|
145
144
|
# A set of methods that are useful when request needs to behave as Mail
|
146
145
|
class PostageApp::Request
|
147
|
-
|
146
|
+
|
148
147
|
attr_accessor :delivery_handler,
|
149
148
|
:perform_deliveries,
|
150
149
|
:raise_delivery_errors
|
151
|
-
|
150
|
+
|
152
151
|
# Either doing an actual send, or passing it along to Mail::TestMailer
|
153
152
|
# Probably not the best way as we're skipping way too many intermediate methods
|
154
153
|
def deliver
|
@@ -158,10 +157,10 @@ class PostageApp::Request
|
|
158
157
|
self.send
|
159
158
|
end
|
160
159
|
end
|
161
|
-
|
160
|
+
|
162
161
|
# Not 100% on this, but I need to assign this so I can properly handle deliver method
|
163
162
|
def delivery_method(method = nil, settings = {})
|
164
163
|
@delivery_method = method
|
165
164
|
end
|
166
|
-
|
165
|
+
|
167
166
|
end
|
@@ -112,7 +112,6 @@ class PostageApp::Mailer < ActionMailer::Base
|
|
112
112
|
|
113
113
|
# Handle defaults
|
114
114
|
headers = headers.reverse_merge(default_values)
|
115
|
-
headers[:subject] ||= default_i18n_subject
|
116
115
|
|
117
116
|
# Apply charset at the beginning so all fields are properly quoted
|
118
117
|
charset = headers[:charset]
|
data/lib/postageapp/version.rb
CHANGED
@@ -1,38 +1,44 @@
|
|
1
1
|
# Test mailer for ActionMailer 3
|
2
2
|
class Notifier < PostageApp::Mailer
|
3
|
-
|
3
|
+
|
4
4
|
self.append_view_path(File.expand_path('../', __FILE__))
|
5
|
-
|
5
|
+
|
6
6
|
def blank
|
7
7
|
# ... nothing to see here
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def with_no_content
|
11
11
|
mail(headers_hash)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
|
+
def with_no_subject
|
15
|
+
hash_without_subject = headers_hash
|
16
|
+
hash_without_subject.delete(:subject)
|
17
|
+
mail(hash_without_subject)
|
18
|
+
end
|
19
|
+
|
14
20
|
def with_text_only_view
|
15
21
|
mail(headers_hash)
|
16
22
|
end
|
17
|
-
|
23
|
+
|
18
24
|
def with_html_and_text_views
|
19
25
|
mail(headers_hash) do |format|
|
20
26
|
format.text
|
21
27
|
format.html
|
22
28
|
end
|
23
29
|
end
|
24
|
-
|
30
|
+
|
25
31
|
def with_simple_view
|
26
32
|
mail(headers_hash)
|
27
33
|
end
|
28
|
-
|
34
|
+
|
29
35
|
def with_body_and_attachment_as_file
|
30
36
|
attachments['sample_file.txt'] = 'File content'
|
31
37
|
mail(headers_hash) do |format|
|
32
38
|
format.html { render :text => 'manual body text'}
|
33
39
|
end
|
34
40
|
end
|
35
|
-
|
41
|
+
|
36
42
|
def with_body_and_attachment_as_hash
|
37
43
|
attachments['sample_file.txt'] = {
|
38
44
|
:content_type => 'text/rich',
|
@@ -42,16 +48,16 @@ class Notifier < PostageApp::Mailer
|
|
42
48
|
format.html { render :text => 'manual body text'}
|
43
49
|
end
|
44
50
|
end
|
45
|
-
|
51
|
+
|
46
52
|
def with_custom_postage_variables
|
47
53
|
headers['CustomHeader1'] = 'CustomValue1'
|
48
54
|
headers 'CustomHeader2' => 'CustomValue2'
|
49
|
-
|
55
|
+
|
50
56
|
postageapp_template 'test-template'
|
51
57
|
postageapp_variables 'variable' => 'value'
|
52
58
|
postageapp_api_key 'custom_api_key'
|
53
59
|
postageapp_uid 'custom_uid'
|
54
|
-
|
60
|
+
|
55
61
|
mail(
|
56
62
|
:from => 'test@test.test',
|
57
63
|
:subject => 'Test Message',
|
@@ -61,14 +67,14 @@ class Notifier < PostageApp::Mailer
|
|
61
67
|
}
|
62
68
|
)
|
63
69
|
end
|
64
|
-
|
70
|
+
|
65
71
|
private
|
66
|
-
|
72
|
+
|
67
73
|
def headers_hash(options = {})
|
68
74
|
{ :from => 'sender@test.test',
|
69
75
|
:subject => 'Test Message',
|
70
76
|
:to => 'test@test.test'
|
71
77
|
}.merge(options)
|
72
78
|
end
|
73
|
-
|
79
|
+
|
74
80
|
end
|
data/test/mailer_3_test.rb
CHANGED
@@ -13,6 +13,11 @@ class Mailer3Test < Test::Unit::TestCase
|
|
13
13
|
assert_equal ({}), mail.arguments['content']
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_create_with_no_subject
|
17
|
+
mail = Notifier.with_no_subject
|
18
|
+
assert mail.arguments['headers'][:subject].nil?
|
19
|
+
end
|
20
|
+
|
16
21
|
def test_create_with_simple_view
|
17
22
|
mail = Notifier.with_simple_view
|
18
23
|
assert_equal 'with layout simple view content', mail.arguments['content']['text/html']
|
data/test/mailer_4_test.rb
CHANGED
@@ -12,6 +12,11 @@ class Mailer4Test < Test::Unit::TestCase
|
|
12
12
|
mail = Notifier.with_no_content
|
13
13
|
assert_equal ({}), mail.arguments['content']
|
14
14
|
end
|
15
|
+
|
16
|
+
def test_create_with_no_subject
|
17
|
+
mail = Notifier.with_no_subject
|
18
|
+
assert mail.arguments['headers'][:subject].nil?
|
19
|
+
end
|
15
20
|
|
16
21
|
def test_create_with_simple_view
|
17
22
|
mail = Notifier.with_simple_view
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postageapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.22
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Oleg Khabarov
|
@@ -10,22 +9,20 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: json
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0'
|
31
28
|
description: Gem that interfaces with PostageApp.com service to send emails from web
|
@@ -99,26 +96,25 @@ files:
|
|
99
96
|
- test/response_test.rb
|
100
97
|
homepage: http://github.com/postageapp/postageapp-ruby
|
101
98
|
licenses: []
|
99
|
+
metadata: {}
|
102
100
|
post_install_message:
|
103
101
|
rdoc_options: []
|
104
102
|
require_paths:
|
105
103
|
- lib
|
106
104
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
105
|
requirements:
|
109
|
-
- -
|
106
|
+
- - '>='
|
110
107
|
- !ruby/object:Gem::Version
|
111
108
|
version: '0'
|
112
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
110
|
requirements:
|
115
|
-
- -
|
111
|
+
- - '>='
|
116
112
|
- !ruby/object:Gem::Version
|
117
113
|
version: '0'
|
118
114
|
requirements: []
|
119
115
|
rubyforge_project:
|
120
|
-
rubygems_version:
|
116
|
+
rubygems_version: 2.0.3
|
121
117
|
signing_key:
|
122
|
-
specification_version:
|
118
|
+
specification_version: 4
|
123
119
|
summary: Easier way to send email from web apps
|
124
120
|
test_files: []
|