astrotrain 0.4.4 → 0.4.5
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.
- data/VERSION +1 -1
- data/astrotrain.gemspec +2 -2
- data/lib/astrotrain.rb +2 -0
- data/lib/astrotrain/mapping.rb +6 -1
- data/lib/astrotrain/message.rb +8 -2
- data/test/fixtures/html.txt +1 -7
- data/test/message_test.rb +38 -5
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.6
|
data/astrotrain.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{astrotrain}
|
5
|
-
s.version = "0.4.
|
5
|
+
s.version = "0.4.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["technoweenie"]
|
9
|
-
s.date = %q{2009-10-
|
9
|
+
s.date = %q{2009-10-30}
|
10
10
|
s.email = %q{technoweenie@gmail.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
data/lib/astrotrain.rb
CHANGED
data/lib/astrotrain/mapping.rb
CHANGED
@@ -45,7 +45,11 @@ module Astrotrain
|
|
45
45
|
if mapping
|
46
46
|
logged.recipient = recipient
|
47
47
|
logged.mapping = mapping
|
48
|
-
|
48
|
+
begin
|
49
|
+
mapping.process(message, recipient)
|
50
|
+
rescue Astrotrain::ProcessingCancelled
|
51
|
+
logged.error_message = "Cancelled."
|
52
|
+
end
|
49
53
|
logged.delivered_at = Time.now.utc
|
50
54
|
end
|
51
55
|
LoggedMail.log_processed # save successfully processed messages?
|
@@ -61,6 +65,7 @@ module Astrotrain
|
|
61
65
|
def process(message, recipient)
|
62
66
|
Astrotrain.callback(:pre_processing, message, self)
|
63
67
|
Transport.process(message, self, recipient)
|
68
|
+
|
64
69
|
end
|
65
70
|
|
66
71
|
# returns true if the email matches this mapping. Wildcards in the name are allowed.
|
data/lib/astrotrain/message.rb
CHANGED
@@ -54,6 +54,7 @@ module Astrotrain
|
|
54
54
|
Astrotrain.callback(:pre_mapping, message)
|
55
55
|
Mapping.process(message, file)
|
56
56
|
message
|
57
|
+
rescue Astrotrain::ProcessingCancelled
|
57
58
|
end
|
58
59
|
|
59
60
|
# Processes the given file. It parses it by reading the contents, and optionally
|
@@ -282,8 +283,13 @@ module Astrotrain
|
|
282
283
|
@body = @body.join("\n")
|
283
284
|
@html = @html.join("\n")
|
284
285
|
else
|
285
|
-
|
286
|
-
|
286
|
+
if @mail.content_type == 'text/html'
|
287
|
+
@html = @mail.body
|
288
|
+
@body = ''
|
289
|
+
else
|
290
|
+
@body = @mail.body
|
291
|
+
@html = ''
|
292
|
+
end
|
287
293
|
end
|
288
294
|
if !@mail.charset
|
289
295
|
@body = convert_to_utf8(@body)
|
data/test/fixtures/html.txt
CHANGED
@@ -4,13 +4,7 @@ To: xyz@astrotrain.com
|
|
4
4
|
Message-ID: <11644553.1741252281981737.JavaMail.root@astrotrain>
|
5
5
|
Subject: ABC DEF
|
6
6
|
MIME-Version: 1.0
|
7
|
-
Content-Type: multipart/mixed;
|
8
|
-
boundary="----=_Part_1695_189596019.1252281981305"
|
9
|
-
X-Mailer: Railo Mail
|
10
|
-
|
11
|
-
------=_Part_1695_189596019.1252281981305
|
12
7
|
Content-Type: text/html; charset=UTF-8
|
13
8
|
Content-Transfer-Encoding: quoted-printable
|
14
9
|
|
15
|
-
<p>ABC</p>
|
16
|
-
------=_Part_1695_189596019.1252281981305--
|
10
|
+
<p>ABC</p>
|
data/test/message_test.rb
CHANGED
@@ -42,6 +42,16 @@ class Astrotrain::MessageTest < Astrotrain::TestCase
|
|
42
42
|
assert_equal callback_msg, @msg
|
43
43
|
end
|
44
44
|
|
45
|
+
it "it allows pre_mapping callback to cancel processing" do
|
46
|
+
Astrotrain::LoggedMail.log_processed = true
|
47
|
+
Astrotrain.callback(:pre_mapping) do |message|
|
48
|
+
raise Astrotrain::ProcessingCancelled
|
49
|
+
end
|
50
|
+
|
51
|
+
@msg = Astrotrain::Message.receive(mail(:mapped))
|
52
|
+
assert_equal 0, Astrotrain::LoggedMail.count
|
53
|
+
end
|
54
|
+
|
45
55
|
it "calls pre_processing callback" do
|
46
56
|
Astrotrain::LoggedMail.log_processed = true
|
47
57
|
callback_msg, callback_map = nil
|
@@ -56,6 +66,17 @@ class Astrotrain::MessageTest < Astrotrain::TestCase
|
|
56
66
|
assert_equal callback_map, @log.mapping
|
57
67
|
end
|
58
68
|
|
69
|
+
it "it allows pre_processing callback to cancel processing" do
|
70
|
+
Astrotrain::LoggedMail.log_processed = true
|
71
|
+
Astrotrain.callback(:pre_processing) do |message, mapping|
|
72
|
+
raise Astrotrain::ProcessingCancelled
|
73
|
+
end
|
74
|
+
|
75
|
+
@msg = Astrotrain::Message.receive(mail(:mapped))
|
76
|
+
@log = Astrotrain::LoggedMail.first
|
77
|
+
assert_equal "Cancelled.", @log.error_message
|
78
|
+
end
|
79
|
+
|
59
80
|
it "calls post_processing callback" do
|
60
81
|
Astrotrain::LoggedMail.log_processed = true
|
61
82
|
callback_msg, callback_map, callback_log = nil
|
@@ -145,11 +166,8 @@ class Astrotrain::MessageTest < Astrotrain::TestCase
|
|
145
166
|
@message = Astrotrain::Message.parse(@raw)
|
146
167
|
end
|
147
168
|
|
148
|
-
it "parses message-id" do
|
169
|
+
it "parses message-id and headers" do
|
149
170
|
assert_equal 'a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com', @message.message_id
|
150
|
-
end
|
151
|
-
|
152
|
-
it "parses TMail::Mail headers" do
|
153
171
|
expected = {'mime-version' => '1.0', 'content-type' => 'text/plain; charset=ISO-8859-1', 'to' => 'Processor <processor@astrotrain.com>',
|
154
172
|
'x-custom' => 'reply', 'content-transfer-encoding' => '7bit', 'content-disposition' => 'inline', 'message-id' => '<a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>'}
|
155
173
|
assert_equal expected, @message.headers
|
@@ -369,6 +387,21 @@ class Astrotrain::MessageTest < Astrotrain::TestCase
|
|
369
387
|
end
|
370
388
|
end
|
371
389
|
|
390
|
+
describe "with only HTML body in a multipart message" do
|
391
|
+
before :all do
|
392
|
+
@raw = mail(:html_multipart)
|
393
|
+
@message = Astrotrain::Message.parse(@raw)
|
394
|
+
end
|
395
|
+
|
396
|
+
it "parses emtpy body" do
|
397
|
+
assert_equal '', @message.body
|
398
|
+
end
|
399
|
+
|
400
|
+
it "parses HTML body" do
|
401
|
+
assert_equal "<p>ABC</p>\n------", @message.html
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
372
405
|
describe "with only HTML body" do
|
373
406
|
before :all do
|
374
407
|
@raw = mail(:html)
|
@@ -380,7 +413,7 @@ class Astrotrain::MessageTest < Astrotrain::TestCase
|
|
380
413
|
end
|
381
414
|
|
382
415
|
it "parses HTML body" do
|
383
|
-
assert_equal "<p>ABC</p
|
416
|
+
assert_equal "<p>ABC</p>", @message.html
|
384
417
|
end
|
385
418
|
end
|
386
419
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: astrotrain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- technoweenie
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-30 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|