decoration_mail 0.1.2 → 0.2.0

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/README.rdoc CHANGED
@@ -1,8 +1,8 @@
1
- == DecorationMailとは
1
+ = DecorationMailとは
2
2
  携帯電話で作成されたデコレーションメール(デコメール)をRubyで扱いやすくするためのライブラリです。
3
3
  今のところ受信したメールをパースするのみでデコメールの新規作成は出来ません。そのうち実装するかもしれません。。。
4
4
 
5
- === 特徴
5
+ == 特徴
6
6
  * Rails3から採用されたActionMailerのバックエンド、Mailライブラリを少し拡張して利用します。
7
7
  * デコメールのHTMLをXHTMLとインラインCSSに変換します。
8
8
  * デコメールのHTMLからHTMLタグ、HEADタグ、BODYタグが削除されて本文のみ取得出来ます。
@@ -55,3 +55,6 @@ MogileFSなどのストレージを利用する場合に使用すると便利で
55
55
 
56
56
  # 本文下部に追加
57
57
  @html = @deco.save(:other_images => :bottom) do |image|
58
+
59
+ === コピーライト
60
+ Copyright (C) 2011 Dai Akatsuka, released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{decoration_mail}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dai Akatsuka"]
12
- s.date = %q{2011-02-24}
12
+ s.date = %q{2011-03-10}
13
13
  s.description = %q{Decoration Mail Parser}
14
14
  s.email = %q{d.akatsuka@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "spec/resources/au_decoration_with_attachment.eml",
34
34
  "spec/resources/docomo_decoration.eml",
35
35
  "spec/resources/docomo_decoration_with_attachment.eml",
36
+ "spec/resources/other_decoration.eml",
36
37
  "spec/resources/softbank_decoration.eml",
37
38
  "spec/resources/softbank_decoration_with_attachment.eml",
38
39
  "spec/spec_helper.rb",
@@ -42,7 +43,7 @@ Gem::Specification.new do |s|
42
43
  ]
43
44
  s.homepage = %q{https://github.com/dakatsuka/decoration_mail}
44
45
  s.require_paths = ["lib"]
45
- s.rubygems_version = %q{1.3.7}
46
+ s.rubygems_version = %q{1.5.2}
46
47
  s.summary = %q{Decoration Mail Parser}
47
48
  s.test_files = [
48
49
  "spec/spec_helper.rb",
@@ -52,7 +53,6 @@ Gem::Specification.new do |s|
52
53
  ]
53
54
 
54
55
  if s.respond_to? :specification_version then
55
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
56
56
  s.specification_version = 3
57
57
 
58
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -3,7 +3,6 @@ $:.unshift(File.dirname(__FILE__))
3
3
 
4
4
  require 'mail'
5
5
  require 'hpricot'
6
- require 'nkf'
7
6
 
8
7
  require 'decoration_mail/converter'
9
8
  require 'decoration_mail/image'
@@ -2,41 +2,23 @@
2
2
 
3
3
  module DecorationMail
4
4
  class Base
5
+ attr_reader :images, :subject
6
+
5
7
  def initialize(mail)
6
- @attachments = mail.attachments
7
- @subject = NKF.nkf("-w", mail.subject)
8
+ each_attachments(mail)
9
+ @subject = mail.subject.encode("UTF-8")
8
10
  @body_text = parse_text(mail.text_part)
9
11
  @body_html = parse_html(mail.html_part)
10
12
  end
11
13
 
12
- def subject
13
- @subject
14
- end
15
-
16
- def images
17
- images = []
18
-
19
- @attachments.each do |attachment|
20
- content_type = attachment.header['content-type'].to_s
21
- content_id = attachment.header['content-id'].to_s.sub(/^</, '').sub(/>$/, '')
22
- content_id = attachment.filename unless content_id
23
- file_name = attachment.filename
24
-
25
- next unless check_content_type(content_type)
26
- images << DecorationMail::Image.new(content_id, content_type, file_name, attachment)
27
- end
28
-
29
- images
30
- end
31
-
32
14
  def save(options = {}, &block)
33
- images.each do |image|
15
+ @images.each do |image|
34
16
  image.instance_eval(&block)
35
17
 
36
18
  if @body_html.inner_html =~ /#{image.content_id}/
37
19
  @body_html.search("img").each do |element|
38
20
  if element[:src] == image.content_id
39
- element[:src] = (image.path ? image.path : image.filename)
21
+ element[:src] = (image.path ? image.path : image.filename.to_s)
40
22
  end
41
23
  end
42
24
  else
@@ -53,36 +35,56 @@ module DecorationMail
53
35
  end
54
36
 
55
37
  private
56
- def parse_text(text)
57
- NKF.nkf("-w", text.to_s)
58
- end
38
+ def parse_text(text)
39
+ text.to_s.encode("UTF-8")
40
+ end
41
+
42
+ def parse_html(html)
43
+ html = html.body.to_s.encode("UTF-8")
44
+ html = Hpricot.parse(html)
59
45
 
60
- def parse_html(html)
61
- html = NKF.nkf("-w", html.body.to_s)
62
- html = Hpricot.parse(html)
46
+ if html.search("body").empty?
47
+ raise ArgumentError, 'invalid HTML'
48
+ else
49
+ html = DecorationMail::Converter.convert_to_xhtml(html).at('div')
50
+ end
63
51
 
64
- if html.search("body").empty?
65
- raise ArgumentError, 'invalid HTML'
66
- else
67
- html = DecorationMail::Converter.convert_to_xhtml(html).at('div')
52
+ html
68
53
  end
69
54
 
70
- html
71
- end
55
+ def check_content_type(content_type)
56
+ case content_type
57
+ when /^image\/gif/
58
+ true
59
+ when /^image\/jpg/
60
+ true
61
+ when /^image\/jpeg/
62
+ true
63
+ when /^image\/png/
64
+ true
65
+ else
66
+ false
67
+ end
68
+ end
72
69
 
73
- def check_content_type(content_type)
74
- case content_type
75
- when /^image\/gif/
76
- true
77
- when /^image\/jpg/
78
- true
79
- when /^image\/jpeg/
80
- true
81
- when /^image\/png/
82
- true
83
- else
84
- false
70
+ def each_attachments(part)
71
+ @images = [] unless defined?(@images)
72
+
73
+ if part.multipart?
74
+ part.parts.each do |part|
75
+ if part.multipart?
76
+ each_attachments(part)
77
+ else
78
+ content_type = part.header['content-type'].to_s
79
+ next unless check_content_type(content_type)
80
+
81
+ content_id = part.header['content-id'].to_s.sub(/^</, '').sub(/>$/, '')
82
+ content_id = part.filename if content_id.blank?
83
+ filename = part.filename
84
+ @images << DecorationMail::Image.new(content_id, content_type, filename, part)
85
+ end
86
+ end
87
+ end
85
88
  end
86
- end
87
89
  end
88
90
  end
@@ -0,0 +1,608 @@
1
+ Message-ID: <4D78A417.5020204@gmail.com>
2
+ Date: Thu, 10 Mar 2011 19:12:39 +0900
3
+ From: =?ISO-2022-JP?B?GyRCM3Q8MDJxPFIlJCU5JUgbKEIgGyRCQFZETRsoQg==?=
4
+ <d.akatsuka@gmail.com>
5
+ User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; ja-JP-mac; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9
6
+ MIME-Version: 1.0
7
+ To: other@example.com
8
+ Subject: =?ISO-2022-JP?B?GyRCJEYkOSRIGyhC?=
9
+ Content-Type: multipart/mixed;
10
+ boundary="------------050008000807010306070900"
11
+
12
+ This is a multi-part message in MIME format.
13
+ --------------050008000807010306070900
14
+ Content-Type: multipart/alternative;
15
+ boundary="------------010105050505040503060704"
16
+
17
+
18
+ --------------010105050505040503060704
19
+ Content-Type: text/plain; charset=ISO-2022-JP
20
+ Content-Transfer-Encoding: 7bit
21
+
22
+ $B;`$L$[$IBgNL$K?)$C$F$d$k(B
23
+ $B$C$F$$$&$+!";`$L$[$I(B
24
+ $B?)$&$C$F$I$N$/$i$$$@(B
25
+ $B$J!A$s$F9M$($J$,$i(B
26
+ $B%9%^%U%)Gd$j>l$rWQWK$J$&(B
27
+ $B$&!A$s!"(B
28
+ $B$$$6$H$$$&$H$J$+$J$+(B
29
+ $BJ8$,;W$$$D$+$J$$(B($B>P(B)
30
+ $B"($4$^$+$7$F$_$k(B($B>P(B)
31
+
32
+ --------------010105050505040503060704
33
+ Content-Type: multipart/related;
34
+ boundary="------------060000030104030702080004"
35
+
36
+
37
+ --------------060000030104030702080004
38
+ Content-Type: text/html; charset=ISO-2022-JP
39
+ Content-Transfer-Encoding: 7bit
40
+
41
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
42
+ <html>
43
+ <head>
44
+ <meta http-equiv="Content-Type" content="text/html;
45
+ charset=ISO-2022-JP">
46
+ </head>
47
+ <body bgcolor="#ffffff" text="#000000">
48
+ <div align="center"><font color="#ff4bff"><img
49
+ src="cid:part1.05060609.02020107@gmail.com"></font></div>
50
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
51
+ <div align="center"><font color="#ff4bff">$B;`$L$[$IBgNL$K?)$C$F$d$k(B<img
52
+ src="cid:part2.05060400.09050304@gmail.com"></font></div>
53
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
54
+ <div align="center"><font color="#ff4bff">$B$C$F$$$&$+!";`$L$[$I(B</font></div>
55
+ <div align="center"><font color="#ff4bff">$B?)$&$C$F$I$N$/$i$$$@(B<img
56
+ src="cid:part3.05010204.05060207@gmail.com"></font></div>
57
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
58
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
59
+ <div align="center"><font color="#ff4bff">$B$J!A$s$F9M$($J$,$i(B</font></div>
60
+ <div align="center"><font color="#ff4bff">$B%9%^%U%)Gd$j>l$rWQWK$J$&(B<img
61
+ src="cid:part4.04020405.03080707@gmail.com"></font></div>
62
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
63
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
64
+ <div align="center"><font color="#ff4bff">$B$&!A$s!"(B</font></div>
65
+ <div align="center"><font color="#ff4bff">$B$$$6$H$$$&$H$J$+$J$+(B</font></div>
66
+ <div align="center"><font color="#ff4bff">$BJ8$,;W$$$D$+$J$$(B($B>P(B)</font></div>
67
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
68
+ <div align="center"><font color="#ff4bff"><img
69
+ src="cid:part5.09080106.04030203@gmail.com"><img
70
+ src="cid:part5.09080106.04030203@gmail.com"><img
71
+ src="cid:part5.09080106.04030203@gmail.com"><img
72
+ src="cid:part5.09080106.04030203@gmail.com"><img
73
+ src="cid:part5.09080106.04030203@gmail.com"><img
74
+ src="cid:part5.09080106.04030203@gmail.com"><img
75
+ src="cid:part5.09080106.04030203@gmail.com"></font></div>
76
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
77
+ <div align="center"><font color="#ff4bff">$B"($4$^$+$7$F$_$k(B($B>P(B)</font></div>
78
+ <div align="center"><font color="#ff4bff">&nbsp;</font></div>
79
+ <div align="center"><font color="#ff4bff"><img
80
+ src="cid:part12.03000000.06020504@gmail.com"></font></div>
81
+ </body>
82
+ </html>
83
+
84
+ --------------060000030104030702080004
85
+ Content-Type: image/gif
86
+ Content-Transfer-Encoding: base64
87
+ Content-ID: <part1.05060609.02020107@gmail.com>
88
+
89
+ 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
134
+ --------------060000030104030702080004
135
+ Content-Type: image/gif
136
+ Content-Transfer-Encoding: base64
137
+ Content-ID: <part2.05060400.09050304@gmail.com>
138
+
139
+ R0lGODlhFAAUAHAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJMgADACwAAAAAFAAUAIFURz7S
140
+ RSnva1EAAAAIWgAHCBxIsKBBgwASJjx4EEAAARADAGBI0CHEiBIpCrR4MUBGjRwxTgT5sONH
141
+ iiEFeByJsqTKlRo3mmRJUmTMgQBe0ozpEOZNnAt/CkUZVGhOlTtJ+jRadGjMgAAh+QQJMgAD
142
+ ACwAAAAAFAAUAIFURz7va1HSRSkAAAAIVAAHCBxIsKDBgwgTCgTAkKFCggAEBJgoAMDDAREn
143
+ Uqz4MKNGARwVetxoUaTEjyETjgwAsqRJkhcXUnR5MWLLmAMb4tyJUOdOADN/gkwZ0yfPozgD
144
+ AgA7
145
+ --------------060000030104030702080004
146
+ Content-Type: image/gif
147
+ Content-Transfer-Encoding: base64
148
+ Content-ID: <part3.05010204.05060207@gmail.com>
149
+
150
+ R0lGODlhFAAUAHAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJMgAEACwAAAAAFAAUAIIjZqoD
151
+ oO0sxf////////8AAAAAAAAAAAAIagAJCBxIsKBBgwASJjyIEIAAAQEiLmRIwOHDixADAGDo
152
+ cMAAjA8lHuw4QGPCABk1FrQIcaNAiyIJslT5MiTNgQAixqyY0qVMhTh7UpSpc+LQlzuPvjSq
153
+ tClFoE55towK06fSnEmvMo1KMSAAIfkECTIABAAsAAAAABQAFACCI2aqA6DtLMX/////////
154
+ AAAAAAAAAAAACGMACQgcSLCgwYMIEypcSACAQ4cMGwIQICCARYgJJ1LcWDEAAIQTBwzgSPGi
155
+ QY0iPToM0NFjQY0VPwrUaJIgAIs1G7aUafPhwIk4eSq8eVHo0JwRfUZcmhHjUppGjyJlqJTp
156
+ woAAOw==
157
+ --------------060000030104030702080004
158
+ Content-Type: image/gif
159
+ Content-Transfer-Encoding: base64
160
+ Content-ID: <part4.04020405.03080707@gmail.com>
161
+
162
+ R0lGODlhFAAUAKIAAGo5BgC37vzvxaqJvexpQRsbG////wAAACH/C05FVFNDQVBFMi4wAwEA
163
+ AAAh+QQJMgAGACwAAAAAFAAUAAADXmix1v5QLRarnA5oYCfdW0cZQmlayiMUJRukr1PKZvne
164
+ qjA0AlH6uFgjNhj8fIILRGgoOh3MYaTY3M0e0arDmMROd1DUgxoWG0BQDQoUCqgr78bGzYnE
165
+ H+hMyIzf8xMAIfkEBTIABgAsAQAAABIAEwAAA1lourxh7zUDKlARwiCt1REnGkJpYtw2CkXZ
166
+ OuhqlgutKgJR6spga7icTjAYADGMohJWExiKTyNDEpRGG9Rjz4pkLqATRYXhCVMuZw+6oV6f
167
+ J2W428z+0MmfBAA7
168
+ --------------060000030104030702080004
169
+ Content-Type: image/gif
170
+ Content-Transfer-Encoding: base64
171
+ Content-ID: <part5.09080106.04030203@gmail.com>
172
+
173
+ R0lGODlhFAAUAJEDADZTewAAAMgWHf///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJZAADACwA
174
+ AAAAFAAUAAACQpyPqcvtb4KESFoabWCgV410wCAmV+iJ6sqO5bDBQhyX77YJ8E56ZqyDxRrD
175
+ II9ixAx0SYix2WhCFcMKpHp8DLGHAgAh+QQJZAADACwAAAAAFAAUAAACQZyPqcvtCeIzEYya
176
+ goay+g9a2BCQ2lZenUSaZ6tamYs+6Qs7t5FOmrCZIARCBbE4RCaRguagedQtegzqwarA5g4F
177
+ ACH5BAWWAAMALAAAAAAUABQAAAJChIepaTC9glyw2YsdHIHL2T3H1n0gsimlyS1u+CGhq8o2
178
+ /QbChONCD/wBfUNicfETHgdK5XB2A0IT0xetGrk+tYsCADs=
179
+ --------------060000030104030702080004
180
+ Content-Type: image/gif
181
+ Content-Transfer-Encoding: base64
182
+ Content-ID: <part12.03000000.06020504@gmail.com>
183
+
184
+ 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
437
+ 1a9n3979e/jx5c+nX9/+ffz59e/n339/QAA7
438
+ --------------060000030104030702080004--
439
+
440
+ --------------010105050505040503060704--
441
+
442
+ --------------050008000807010306070900
443
+ Content-Type: image/jpeg;
444
+ name="20110205153513.jpg"
445
+ Content-Transfer-Encoding: base64
446
+ Content-Disposition: attachment;
447
+ filename="20110205153513.jpg"
448
+
449
+ /9j/4QO+RXhpZgAASUkqAAgAAAAMAA4BAgAPAAAAngAAAA8BAgAHAAAArgAAABABAgAFAAAA
450
+ tgAAABIBAwABAAAAAQAAABoBBQABAAAAvAAAABsBBQABAAAAxAAAACgBAwABAAAAAgAAADEB
451
+ AgANAAAAzAAAADIBAgAUAAAA2gAAABMCAwABAAAAAQAAAJiCAgAOAAAA7gAAAGmHBAABAAAA
452
+ /AAAAAAAAAAyMDExMDIwNTE1MzUxMwAARG9Db01vAABGMDNCAABIAAAAAQAAAEgAAAABAAAA
453
+ RjAzQiBWZXIxLjAwAAAyMDExOjAyOjA1IDE1OjQ0OjM5ACAgICAgICAgICAgICAAKgCaggUA
454
+ AQAAAPoCAACdggUAAQAAAAIDAAAiiAMAAQAAAAIAAAAniAMAAQAAAJUAAAAAkAcABAAAADAy
455
+ MjADkAIAFAAAAAoDAAAEkAIAFAAAAB4DAAABkQcABAAAAAECAwACkQUAAQAAADIDAAABkgoA
456
+ AQAAADoDAAACkgUAAQAAAEIDAAADkgoAAQAAAEoDAAAEkgoAAQAAAFIDAAAFkgUAAQAAAFoD
457
+ AAAHkgMAAQAAAAIAAAAIkgMAAQAAAAAAAAAJkgMAAQAAAAAAAAAKkgUAAQAAAGIDAAB8kgcA
458
+ AQAAAAAAAACGkgcAFgAAAGoDAAAAoAcABAAAADAxMDABoAMAAQAAAAEAAAACoAMAAQAAALgA
459
+ AAADoAMAAQAAALgAAAAFoAQAAQAAAJgDAAAOogUAAQAAAIADAAAPogUAAQAAAIgDAAAQogMA
460
+ AQAAAAIAAAAXogMAAQAAAAIAAAAAowcAAQAAAAMAAAABowcAAQAAAAEAAAABpAMAAQAAAAAA
461
+ AAACpAMAAQAAAAAAAAADpAMAAQAAAAAAAAAEpAUAAQAAAJADAAAFpAMAAQAAABwAAAAGpAMA
462
+ AQAAAAAAAAAHpAMAAQAAAAAAAAAIpAMAAQAAAAAAAAAJpAMAAQAAAAAAAAAKpAMAAQAAAAAA
463
+ AAAMpAMAAQAAAAIAAAAAAAAABxEAACBOAAAcAAAACgAAADIwMTE6MDI6MDUgMTU6MzU6MTMA
464
+ MjAxMTowMjowNSAxNTozNToxOQA4zmoAAONMALMyAgAAAAEAifgCAAAAAQAol///AAABAAAA
465
+ AAAAAAEAHgAAAAoAAADMAQAAZAAAAAAAAAAAAAAAMjAxMTAyMDUxNTM1MTM9ywEACgAAAD3L
466
+ AQAKAAAA4gQAAOgDAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAAD/wAARCAC4ALgD
467
+ ASEAAhEBAxEC/9sAxQAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob
468
+ IxwWFiAsICMmJykqKRkfLTAtKDAlKCkoAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgo
469
+ KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgCBwcHCggKEwoKEygaFhooKCgo
470
+ KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/EAaIAAAEF
471
+ AQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEG
472
+ E1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpT
473
+ VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2
474
+ t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEB
475
+ AAAAAAAAAQIDBAUGBwgJCgsRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB
476
+ CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla
477
+ Y2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLD
478
+ xMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+VoyA6k+
479
+ taUjJI0QGPvjioktSlsdrZxiLTvu4yM1BqUQ/wCEavW6gYPp6V5ifv8AzPonH9w15HCx/erU
480
+ hb5R7168dD5iSJR1zirSdOlS2XFE6WzyuEjRmY8AAZru/DHwy1jU0WSeP7LCecyD5j+Fctau
481
+ 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
608
+ --------------050008000807010306070900--
@@ -2,68 +2,269 @@
2
2
  require File.expand_path('../../spec_helper', __FILE__)
3
3
 
4
4
  describe DecorationMail::Base do
5
- before {
6
- @mail = Mail.read(File.expand_path('../../resources/docomo_decoration_with_attachment.eml', __FILE__))
7
- @deco = @mail.decoration
8
- }
5
+ context "received DoCoMo" do
6
+ before do
7
+ @mail = Mail.read(File.expand_path('../../resources/docomo_decoration_with_attachment.eml', __FILE__))
8
+ @deco = @mail.decoration
9
+ end
9
10
 
10
- subject { @deco }
11
+ subject { @deco }
11
12
 
12
- it { should have(7).images }
13
- its(:subject) { should eql @mail.subject }
13
+ it { should have(7).images }
14
+ its(:subject) { should eql @mail.subject }
14
15
 
15
- context "using save method" do
16
- it "ブロック付きで呼び出すべき" do
17
- lambda { subject.save }.should raise_error(ArgumentError)
18
- end
16
+ context "using save method" do
17
+ it "ブロック付きで呼び出すべき" do
18
+ lambda { subject.save }.should raise_error(ArgumentError)
19
+ end
19
20
 
20
- it "ブロック変数はDecorationMail::Imageのインスタンスであるべき" do
21
- images = []
22
- subject.save do |image|
23
- images << image
21
+ it "ブロック変数はDecorationMail::Imageのインスタンスであるべき" do
22
+ images = []
23
+ subject.save do |image|
24
+ images << image
25
+ end
26
+ images.first.should be_instance_of DecorationMail::Image
24
27
  end
25
- images.first.should be_instance_of DecorationMail::Image
26
- end
27
28
 
28
- it "HTMLが返るべき" do
29
- html = subject.save do |image|
29
+ it "HTMLが返るべき" do
30
+ html = subject.save do |image|
31
+ end
32
+ Hpricot.parse(html).search("div").should_not be_empty
30
33
  end
31
- Hpricot.parse(html).search("div").should_not be_empty
32
- end
33
34
 
34
- it "HTMLにはHTMLタグが含まれない" do
35
- html = subject.save do |image|
35
+ it "HTMLにはHTMLタグが含まれない" do
36
+ html = subject.save do |image|
37
+ end
38
+ Hpricot.parse(html).search("html").should be_empty
39
+ end
40
+
41
+ it "HTMLにはHEADタグが含まれない" do
42
+ html = subject.save do |image|
43
+ end
44
+ Hpricot.parse(html).search("head").should be_empty
45
+ end
46
+
47
+ it "HTMLにはBODYタグが含まれない" do
48
+ html = subject.save do |image|
49
+ end
50
+ Hpricot.parse(html).search("body").should be_empty
36
51
  end
37
- Hpricot.parse(html).search("html").should be_empty
38
- end
39
52
 
40
- it "HTMLにはHEADタグが含まれない" do
41
- html = subject.save do |image|
53
+ it "ブロック変数にパスを渡すとIMGタグのSRCが書き換わるべき" do
54
+ html = subject.save do |image|
55
+ image.path = "http://exmaple.com"
56
+ end
57
+ html.should match /http:\/\/exmaple\.com/
58
+ end
59
+
60
+ it "other_imagesオプションで:topを指定すると添付画像をデコメ上部に貼り付ける" do
61
+ html = subject.save(:other_images => :top) {}
62
+ html.should match /20110205153513\.jpg/
63
+ end
64
+
65
+ it "other_imagesオプションで:bottomを指定すると添付画像をデコメ上部に貼り付ける" do
66
+ html = subject.save(:other_images => :bottom) {}
67
+ html.should match /20110205153513\.jpg/
42
68
  end
43
- Hpricot.parse(html).search("head").should be_empty
44
69
  end
70
+ end
71
+
72
+ context "received au" do
73
+ before do
74
+ @mail = Mail.read(File.expand_path('../../resources/au_decoration_with_attachment.eml', __FILE__))
75
+ @deco = @mail.decoration
76
+ end
77
+
78
+ subject { @deco }
79
+
80
+ it { should have(4).images }
81
+ its(:subject) { should eql @mail.subject }
45
82
 
46
- it "HTMLにはBODYタグが含まれない" do
47
- html = subject.save do |image|
83
+ context "using save method" do
84
+ it "ブロック付きで呼び出すべき" do
85
+ lambda { subject.save }.should raise_error(ArgumentError)
48
86
  end
49
- Hpricot.parse(html).search("body").should be_empty
87
+
88
+ it "ブロック変数はDecorationMail::Imageのインスタンスであるべき" do
89
+ images = []
90
+ subject.save do |image|
91
+ images << image
92
+ end
93
+ images.first.should be_instance_of DecorationMail::Image
94
+ end
95
+
96
+ it "HTMLが返るべき" do
97
+ html = subject.save do |image|
98
+ end
99
+ Hpricot.parse(html).search("div").should_not be_empty
100
+ end
101
+
102
+ it "HTMLにはHTMLタグが含まれない" do
103
+ html = subject.save do |image|
104
+ end
105
+ Hpricot.parse(html).search("html").should be_empty
106
+ end
107
+
108
+ it "HTMLにはHEADタグが含まれない" do
109
+ html = subject.save do |image|
110
+ end
111
+ Hpricot.parse(html).search("head").should be_empty
112
+ end
113
+
114
+ it "HTMLにはBODYタグが含まれない" do
115
+ html = subject.save do |image|
116
+ end
117
+ Hpricot.parse(html).search("body").should be_empty
118
+ end
119
+
120
+ it "ブロック変数にパスを渡すとIMGタグのSRCが書き換わるべき" do
121
+ html = subject.save do |image|
122
+ image.path = "http://exmaple.com"
123
+ end
124
+ html.should match /http:\/\/exmaple\.com/
125
+ end
126
+
127
+ it "other_imagesオプションで:topを指定すると添付画像をデコメ上部に貼り付ける" do
128
+ html = subject.save(:other_images => :top) {}
129
+ html.should match /100503_1507~01\.jpg/
130
+ end
131
+
132
+ it "other_imagesオプションで:bottomを指定すると添付画像をデコメ上部に貼り付ける" do
133
+ html = subject.save(:other_images => :bottom) {}
134
+ html.should match /100503_1507~01\.jpg/
135
+ end
136
+ end
137
+ end
138
+
139
+ context "received Softbank" do
140
+ before do
141
+ @mail = Mail.read(File.expand_path('../../resources/softbank_decoration_with_attachment.eml', __FILE__))
142
+ @deco = @mail.decoration
50
143
  end
51
144
 
52
- it "ブロック変数にパスを渡すとIMGタグのSRCが書き換わるべき" do
53
- html = subject.save do |image|
54
- image.path = "http://exmaple.com"
145
+ subject { @deco }
146
+
147
+ it { should have(9).images }
148
+ its(:subject) { should eql @mail.subject }
149
+
150
+ context "using save method" do
151
+ it "ブロック付きで呼び出すべき" do
152
+ lambda { subject.save }.should raise_error(ArgumentError)
153
+ end
154
+
155
+ it "ブロック変数はDecorationMail::Imageのインスタンスであるべき" do
156
+ images = []
157
+ subject.save do |image|
158
+ images << image
159
+ end
160
+ images.first.should be_instance_of DecorationMail::Image
161
+ end
162
+
163
+ it "HTMLが返るべき" do
164
+ html = subject.save do |image|
165
+ end
166
+ Hpricot.parse(html).search("div").should_not be_empty
167
+ end
168
+
169
+ it "HTMLにはHTMLタグが含まれない" do
170
+ html = subject.save do |image|
171
+ end
172
+ Hpricot.parse(html).search("html").should be_empty
173
+ end
174
+
175
+ it "HTMLにはHEADタグが含まれない" do
176
+ html = subject.save do |image|
177
+ end
178
+ Hpricot.parse(html).search("head").should be_empty
179
+ end
180
+
181
+ it "HTMLにはBODYタグが含まれない" do
182
+ html = subject.save do |image|
183
+ end
184
+ Hpricot.parse(html).search("body").should be_empty
185
+ end
186
+
187
+ it "ブロック変数にパスを渡すとIMGタグのSRCが書き換わるべき" do
188
+ html = subject.save do |image|
189
+ image.path = "http://exmaple.com"
190
+ end
191
+ html.should match /http:\/\/exmaple\.com/
192
+ end
193
+
194
+ it "other_imagesオプションで:topを指定すると添付画像をデコメ上部に貼り付ける" do
195
+ html = subject.save(:other_images => :top) {}
196
+ html.should match /P1000043\.JPG/
197
+ end
198
+
199
+ it "other_imagesオプションで:bottomを指定すると添付画像をデコメ上部に貼り付ける" do
200
+ html = subject.save(:other_images => :bottom) {}
201
+ html.should match /P1000043\.JPG/
55
202
  end
56
- html.should match /http:\/\/exmaple\.com/
57
203
  end
204
+ end
58
205
 
59
- it "other_imagesオプションで:topを指定すると添付画像をデコメ上部に貼り付ける" do
60
- html = subject.save(:other_images => :top) {}
61
- html.should match /20110205153513\.jpg/
206
+ context "recieve HTML Mail" do
207
+ before do
208
+ @mail = Mail.read(File.expand_path('../../resources/other_decoration.eml', __FILE__))
209
+ @deco = @mail.decoration
62
210
  end
63
211
 
64
- it "other_imagesオプションで:bottomを指定すると添付画像をデコメ上部に貼り付ける" do
65
- html = subject.save(:other_images => :bottom) {}
66
- html.should match /20110205153513\.jpg/
212
+ subject { @deco }
213
+ it { should have(7).images }
214
+
215
+ context "using save method" do
216
+ it "ブロック付きで呼び出すべき" do
217
+ lambda { subject.save }.should raise_error(ArgumentError)
218
+ end
219
+
220
+ it "ブロック変数はDecorationMail::Imageのインスタンスであるべき" do
221
+ images = []
222
+ subject.save do |image|
223
+ images << image
224
+ end
225
+ images.each {|image| image.should be_instance_of DecorationMail::Image }
226
+ end
227
+
228
+ it "HTMLが返るべき" do
229
+ html = subject.save do |image|
230
+ end
231
+ Hpricot.parse(html).search("div").should_not be_empty
232
+ end
233
+
234
+ it "HTMLにはHTMLタグが含まれない" do
235
+ html = subject.save do |image|
236
+ end
237
+ Hpricot.parse(html).search("html").should be_empty
238
+ end
239
+
240
+ it "HTMLにはHEADタグが含まれない" do
241
+ html = subject.save do |image|
242
+ end
243
+ Hpricot.parse(html).search("head").should be_empty
244
+ end
245
+
246
+ it "HTMLにはBODYタグが含まれない" do
247
+ html = subject.save do |image|
248
+ end
249
+ Hpricot.parse(html).search("body").should be_empty
250
+ end
251
+
252
+ it "ブロック変数にパスを渡すとIMGタグのSRCが書き換わるべき" do
253
+ html = subject.save do |image|
254
+ image.path = "http://exmaple.com"
255
+ end
256
+ html.should match /http:\/\/exmaple\.com/
257
+ end
258
+
259
+ it "other_imagesオプションで:topを指定すると添付画像をデコメ上部に貼り付ける" do
260
+ html = subject.save(:other_images => :top) {}
261
+ html.should match /20110205153513\.jpg/
262
+ end
263
+
264
+ it "other_imagesオプションで:bottomを指定すると添付画像をデコメ上部に貼り付ける" do
265
+ html = subject.save(:other_images => :bottom) {}
266
+ html.should match /20110205153513\.jpg/
267
+ end
67
268
  end
68
269
  end
69
270
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decoration_mail
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 2
9
- version: 0.1.2
4
+ prerelease:
5
+ version: 0.2.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - Dai Akatsuka
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-02-24 00:00:00 +09:00
13
+ date: 2011-03-10 00:00:00 +09:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -24,10 +20,6 @@ dependencies:
24
20
  requirements:
25
21
  - - ">="
26
22
  - !ruby/object:Gem::Version
27
- segments:
28
- - 2
29
- - 2
30
- - 9
31
23
  version: 2.2.9
32
24
  type: :runtime
33
25
  prerelease: false
@@ -39,10 +31,6 @@ dependencies:
39
31
  requirements:
40
32
  - - ">="
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- - 8
45
- - 3
46
34
  version: 0.8.3
47
35
  type: :runtime
48
36
  prerelease: false
@@ -54,9 +42,6 @@ dependencies:
54
42
  requirements:
55
43
  - - ">="
56
44
  - !ruby/object:Gem::Version
57
- segments:
58
- - 2
59
- - 0
60
45
  version: "2.0"
61
46
  type: :development
62
47
  prerelease: false
@@ -68,8 +53,6 @@ dependencies:
68
53
  requirements:
69
54
  - - ">="
70
55
  - !ruby/object:Gem::Version
71
- segments:
72
- - 0
73
56
  version: "0"
74
57
  type: :development
75
58
  prerelease: false
@@ -100,6 +83,7 @@ files:
100
83
  - spec/resources/au_decoration_with_attachment.eml
101
84
  - spec/resources/docomo_decoration.eml
102
85
  - spec/resources/docomo_decoration_with_attachment.eml
86
+ - spec/resources/other_decoration.eml
103
87
  - spec/resources/softbank_decoration.eml
104
88
  - spec/resources/softbank_decoration_with_attachment.eml
105
89
  - spec/spec_helper.rb
@@ -120,21 +104,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
104
  requirements:
121
105
  - - ">="
122
106
  - !ruby/object:Gem::Version
123
- segments:
124
- - 0
125
107
  version: "0"
126
108
  required_rubygems_version: !ruby/object:Gem::Requirement
127
109
  none: false
128
110
  requirements:
129
111
  - - ">="
130
112
  - !ruby/object:Gem::Version
131
- segments:
132
- - 0
133
113
  version: "0"
134
114
  requirements: []
135
115
 
136
116
  rubyforge_project:
137
- rubygems_version: 1.3.7
117
+ rubygems_version: 1.5.2
138
118
  signing_key:
139
119
  specification_version: 3
140
120
  summary: Decoration Mail Parser