decoration_mail 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ R0lGODlh8ACWAPf/ACEhIR0PATYkE1E3HQg8Fu5+DLZdGFQGJQ0DA8dnFA1rJyAJIAEKBUYk
185
+ CwIXCygbDhAEECgUBxsSChQKBNssLA0JBe3RCv////9M/xAODLe3t8oAANaRTT0eAwi2b+/F
186
+ 77+evxANEKBRHEA1QIBpgGBPYJ+DnzAnMCAaIN+438+rz1BCUHBccLZbCHk9BbKdCK+Qr492
187
+ jzs0A/8y/+NxCW4WFqQhIXdpBcViCA8IAfniwi0XAjcLC5dMBohEBt7ECdRqCVxcXFstBCwn
188
+ AgsLC39EDg8NAWo1BFlOBL85vxcXF7+/v0BAQB4aAaysrFIREc0pKc+3CYAmgBsGBu9H7wIu
189
+ HEATQKCgoJceHkwmA4kcHGhbBMGqCImJiUVFRTAOMAQfDHJycqOQB2tJJzk5OaFtOi4uLoCA
190
+ gMAnJ7IkJM8+z5WVlZSDBikICFBQUKZTB4V2BgaJUxAQEHAhcHsZGWATE8mISAIiFZ8wn+8v
191
+ 78/Pz0pBAwRbOEQODjAJMAiraGdnZ+/v72BgYF8zC35+foZbMN/f32AdYI8rj7uqkjAwMK+v
192
+ r99D35+fnx8cGHBwcFApDq80rwtdI5NkNQNEKu8PapZMGo+Pjw98LlAYUK8ir78mv88pz0AN
193
+ QLt/Q4AZgAIQBgM5I0MtGAeUWnAWcH1xYZ8fn98s32ATYHhSK19AIngINQUnDgZ9TK92QAlO
194
+ HVouEAVmPj45MXg9FS8qJB8QBUAiBwVyRf/pzAhGGndADTweCzIZCbMLUB4CDU8rCW88DDge
195
+ BjAaBcSIXoxHGf/kzL5iFqpXGqubhW44E6ZaJwYvEeAOYw50K4JCF2QzElAQUFcvCgefYZUJ
196
+ Qu/av9CbdKxjMox/bYxjMYB1ZqQKSdfEqX5ZLApVIEYxGfnbwYYIPJ+SgL5/U11VSTwEG48c
197
+ j21jVaVUG+e/oC0DFJyNeTAsJmc3C+nUtsqRaQRQMah3O2kHLiAdGvPSttRvEuV4Dk5HPebK
198
+ r3BPKJptNlBJQNENXfJ5CgAAAP/S/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJMgD/ACwA
199
+ AAAA8ACWAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJ
200
+ kyhTqlzJsqXLlzBjEtxAcwPMfjj7yRyZc+fKmkBb5gwRAqfPjTmTGj16EmjQlENNfFBRVCfT
201
+ iUpxolgRA8SJpVdFOn16MieJD/7SUgUbNmFWnCdYwEiRNu2Hr1bbfhxbsyzOESrq1l2bV6/A
202
+ tyFWkAAhuLG/tRDJGkbIl6ZJnCFiOB5cVe/bEyVM0N28OQZbhWMnJ6xskyfc0aQfd2aqdMRi
203
+ tLFz423IV/VB1q77kcgtmDBtFDECE1/uD8Rpyql9D2RtOaRWxszV9vTZb0T27COeG/+srJq6
204
+ U5A5V+D+7s/Edpnd2S93Xxi6+b4770tGilOz/Lr0cefdf7kVxZB++7mEYHUcaaUcgWmxIB5L
205
+ 8UFImoT1jbdgazFt2CBO6lkoWAkTqlShiI2pUKJAGzL4koeoJViQWSg2Fl6GEb2l4445DVij
206
+ YF8t1CKHLyIoZHQI9RMCdj/atdtCPEYpZVI+NumPaThOB2N+9x2JpEEnZvcBk7F9MNtAU54w
207
+ wgglkOAmDCDESeZyzlXZZAorthgWdTH2lqSdxN3VTwnLEaajmm+CAJuVphGa2wcxhLcVDMwF
208
+ udqCvp13qZ8HhbncjYPSmVQIts1lJXEkCJcbCFVROadjAdr/16V0/7j4G3l/fkdiUo7mRt9w
209
+ p2YHQz/+bUbfUlRKRdoHJc5K63RefjkjoKTF+g9OvcaWarHBikhfq2gOFdp6da2QJXDPSsRn
210
+ rqKyhW238G5WFKEmoPDetVTGAJu16W5kZJInFHpmuNnGCy8M3JIAbrhJoVDCXCv2q+6/nfYT
211
+ 6MCH5VSwwdmlEAMLI7BgwncfmCuejhJrtCWYFpf5JMMoYMgtx8SZgFfDr8ZmAsYEZZUyRivP
212
+ 2E/Oad3YM2b+uTcyzcR5xSPRmxkH5c9AY5pkP0s7tuvR/bBALtOBmswjCuyl8DLVIAV9NAub
213
+ bZ1xPyc8CPZygk4pt8ARo30RxQBr/w0WjXN/h+GUUJPmXJZ6+2selP2Qay1mhQfeGLNT4hT5
214
+ ZqkinjhHuLqFNYB/w/11WiasYG9iWc99+JQhEGim5pt7JOOMZPuTebghNgaDvVmhcLmVq0u5
215
+ cXa3x95UQzjB4Da+wx+rY+ocB89jCKOLmbfxUCWF+2bS60gp2K0+LaK52B/1HlzVgzr93fFi
216
+ ySP0/2FZPnfhUk+a+jxSC++ub6HAfqCLas715meiocWGf1KCX7x2lpUSVC82KdiV3ChHQPOp
217
+ Kjbd29EKJAcDkNnmf75q1ffqMsAKlgQuy8mclGonOQgdawQjrIulTHgTAy5ncGNroQsxE0PB
218
+ hIeGNdxgdv8YyKPhiUlOcQJhjVJQFSX+EIguwUkAiZMC/CXlBA/czAdgQIIR8K5/47LSrmZm
219
+ I9hBUSTv+g8IxIYZBzIHUlbsxxd2FIKzLPEvxDHaGQv4OwzKqWMI/MIc8JAEDGAAD0pJghoQ
220
+ Mcd++A9FWGISpNwEGz3uESVwC1wElcIIQ3oSA5lIihU+mYQFKGmK7JEUZ5LCNn9g6JKYJNbc
221
+ YhA+nHzSkxBICiJuSYU56i8786rLFzVmuxLCEiM4yaKVSoYTKyjllhhgRCKhSYVc9nEzOAGW
222
+ irrWHLyooHjHJEkmHfPHH9Vtl0pRwy2TkE5oYmAO3MSgyULgRhLG83DY2aabjBn/TopkszGs
223
+ ahgLrukYQUFAnRjIZU7wsM5nupOdv8QhZh70lYA9Roqks9zh+umaOblPKShQ4HLMdVBPOjMn
224
+ X2hoUtyJAYiShn+o+EQntIIbDOVTOa9r3UY5ap2WCQZSJgABF2/WHVTqDCcINaQUlCIFUjoU
225
+ mpHwVFoyBwFOaOITeUBFGvHkSHLVbTjy4yl6fimYFLCgKiFQ4uSK0tRPSjMpC/gkFZICAZbC
226
+ s5WCOVxVOZHLT8zADxh1pVa+Vy8UCtaMYsVKPN84T7XWxTRxhSY8V/rJUOKkrdA0ZQ/9wbtN
227
+ /BUnmpjBJnCCVwReETczTOyHgPUdLJFVhv1gqDsPkZND//DyEFbYpTvhycLH4oQUM/gETqAx
228
+ g+ICtrcSrWNdKKjajliuTCU43QqWZjKjLhcnVGApBtQgBdlqF5pL7UcPXweBPOQhl+Ut7gzK
229
+ gRO5eexN5Aprc/lDNCb2TgX4bFo/Rvnd/kIzCSeFH5ZMMQNS4ITA6j3FP5ljr/k616eOudEJ
230
+ SLCCqpAAS9adaj/m4N8OYyASJw3BZjnbjwUUN5cmVu8MFCxV7vHTwYxDJeWE6I8PgEwF4Wkd
231
+ quSYXQ9TMxKHUOigqsdV4GriwCqewUzFyxxLwhiZNgRo8siZxtysBQJS6KSH1YCHOTQSMyyw
232
+ 7uE8a+B+5EHFwm2xY4aF2Cc7ZP/BUmbyT3n3OxXcTJCISIKe95wEREghEycV6Igbk7lTKLkf
233
+ nVDxaJWkTLvwzs1IofFPQVQcvOCVOaWrHGZKleHGYMnQM/WDevn63Bu+GNKeq57JVhCnwVlU
234
+ Pluk8JpmvSbFdKXRGATtDLTaj+LmAbAX1G+bUY28zznGvg3UofX6gYoZcAIaof11lR/1aGJr
235
+ xJGkqWLDBq3szZjMs74G9mvr4mRrXwQnIvVHCpLYbfbo9czSFh1zlmdufxqFpu0+FYYWYApg
236
+ Y5E54ISI9qytFHyxNt8/Mu0IcN2eF7+F2DjxAiEAoBSCIjyPxMT0vRiSlCA4ARCn3iNOrqAB
237
+ J7hhVJ3/vjjAMXPw3PDvIUnxAsk1EISQnzHiTtCABrpAcfRxDE8hCHO37Awihn+A3ozDiRm6
238
+ oHMneMHmIu8HANagc5rn5N91ESoZIfSBL44g3bDOXGY6drM34wQATNd5F5SwcUjnJAhVX0PP
239
+ T9DBmxkRQjAQW9AdWzPejSDlaYFBZwZesX4oIQxVdwIZ2g5xpc/c6m/h+39SQIIvnkBf8gHB
240
+ jUIqJhziq+AMIwIgqq4BQBCB8ebGyemVAoFDRAKRve2W8q5IAsd+oLBKsiNzQMA7ovYjE3MQ
241
+ 8ueJ4PG4mwH1BN8RInq81EvH6/ZsTMxiHgSCGOhd98tJgcl85w/B54S/eDBl/06IkPaSnxzq
242
+ HBU0Wrq+X0/Cc8KLiRPDuW6CEtTyLV8nmcJI+wE3kWBw/LVdWaEEgBAGqzds88Ur7LMWtoUB
243
+ 4VVxYKMCJgAyXhdGYrJ/3REYGcRfapBLJwAC9VdL9SY0uZdF9MFQjCAFKjgHJ2Vx7dZ/VcF5
244
+ 2tEPKvhnVlBIvSRvAEJUI/h5dYRrmZNUhjRX3QF2KgcC/CODgoFdvDRHWAdQZZd82DJ//kBS
245
+ WmZIiCQu3NZtHuN1IvUVkSBXc5RWIYR8YkUlkvdTX/EFPYYBX6YUXJGG8fJNN0NPSsRMDYgB
246
+ OUiGgTI4T9YjLpgW9tWAiEQEV7B4iKEYIECFIiKB9v+XFNM1OmMygUTVSXsoh7xnhpcUFShy
247
+ OFJQTf0AdxpACKvHFVaEArYRVIC3eybQReFDT8oyGDFQAnEEABSXCRhAW3xIMn54hvz3I/Qh
248
+ fjnXdIh4AnRRfaajI6hoG4mCRM7IRW6yJomYHJMTA8N0dmQQBISQc2vQTEoih1CoiSbEQ6dC
249
+ VERACKRngEoCPSDYRb6naZ+hGKayGd7XD0SQjV3weKQHecZmISoUTnABjsxhYXjhBcOoAVdw
250
+ fP2QO4bTjtFIaxC5Jv4HJ4CHIYe3jxhZdae3df9BdAiYOD53Ku6BAt+TOWawjzWnJFvIMR4p
251
+ ihmZkcfHkf/BTB9JNSFZjrL/BDr9gJFy94scVBTk95Iv2Y3j1CRIR0D4FizOYT91QSIniZEm
252
+ 5yCBQx8AcJBCuY891w+rmB1HWT7fCC/h0XIjJ5RrB2ccgyUyFwQUpwT6+JJhoCTh4Xw10pWx
253
+ 0x8Hw2iNgRPll5GKF5AcQx9K8HQdd5U6x3YkMCxMaSUmg5RqhiLs13KHRQZtuY+kqCQyiSLI
254
+ 1iMmEB4u+ZIgZz/2ApmOWW3YU2rBIiEoUD2DI3NCmZB/sZW6wit0QR+TSXpOcHpL4x6J2SQ7
255
+ VZqvdir5lW38s3RCaXoqGSxVUQKjQR+dmZE111uh2S10+TPo1i2vI5fHNpx7SXo9uZCMSByz
256
+ CBsY/+IFakd1PDlldcFmsPlGBmI8gbVMFTV/m6R021l1Kbkk1nkjQXAFgtkPZLCPTsB2klY0
257
+ jWkh0ykxStIt5hIC6zmfhod4PMl2XfOdqwKUQdCfeGGbFPeEdWFfotmI6Ecb4yYfJLKLYVcV
258
+ Fwmg58d9NXI4SoCIg6ICpkEEccd2DFotptkkDVaXv+mYX2GiroOBxGeVOyehH8oeqUIEqwcY
259
+ DdcPo+cEKWmMLveVYlSThoETTUJ0QGoht8c7Q2qbxSiQnpYTJBkhOBcEpdhogrKl/hii3CFn
260
+ IkJLjiSm8/FFrFl1lRllM0mLdvQBN5KNq8eidPOjdIo5buoXD5cxI4pBN//CkLIHKl5Qfn0Z
261
+ exZSjw1jhAX1o4HoGAEXFvCYE5cZGyqwK2PHNGuUE2YAoU6ApTWyTZC4ki5jlhDyRJ6aFBIg
262
+ AGMwBpNQBrxaBqkwBqLwAEpxpAW1mRpDoSLioEoQBIunY5g5ayKDrD+1K3/HpYfqEUkhCoXg
263
+ CRzQrd76rd5qB5MwABWgFbEYNdYnm90Gg0mBqe1GRF5DIK9kQf0gAalgB+Car/rKAXaQCuUK
264
+ F23ifyuAP5cnrcEygYuhcrmhfWAGm/wCH/1QAWOwrxSrr3YwBlMyoAq7sQOZHueqLeL4IVPy
265
+ ANxasSYLrmXwr5+6sizbsi77sizLaQDFAtcIs/D/2AE4m7M62wE7gBMPgK8nG7Te6gr/urNG
266
+ e7RIm7RKu7RM27RO+7RQe7Q9KyUB4LQB0A87ELVJyw9c27Veyw8uUK9AK7RkWwY40QJfm7Zq
267
+ u7Zs27Zu+7ZwG7dyO7dqSwM9cAQdkANKEQBC0ANxiwN6mwNAQLeEyw96WwZkm7jdOgD9IASF
268
+ +7iQG7mSO7mUm7YdkBM7ULltixOKq7hm2wGa+7ZA0AJv4AKm6wMtgAOhu7qsO7c4EAABoLpd
269
+ iwP9gAC9gAD94LezewRvELo4Mbade7Kf27pca7d4q7c8sgNHILvE27xA4AOm2wPMK7lX2w8B
270
+ QLqme7kHUAmrYL2m6wIt/4C8uku5PTsAwRu0diCsjru6NOADU5sUAMAEcoATkMALETABSREA
271
+ LkADzcu+R5AVmSu5PdAPvuALbzENlcAMb4G7OdAD/CvAOSEAiHu+FjsG/+oDoYsDQpAUTHAG
272
+ SxAIFxDCejC/DSACJmwJybALuNsPOXAED9y/kosDU1sFfMAHocAA/QC+XNsCPPzCbvsGUwsO
273
+ vYATHXwGFIfACtwPZ3AGj4AT2kAOOZEF00u3NKC3YIDD9aoKheAK51sGkzAGApATOJwDPgy5
274
+ QHC5RNwIIBzCbBzCi4ATxCACCWDCJvwMEYATOYDBMAy5gNsPDBAHHhDIHkAJOzK+bDvAOdEL
275
+ lf9gwEsQwpeAEwbcD4rAxjhRCdqQFDkwxXLrA/0ABpiQCzoiAKI8yqRcyjriAK+ACQ7QD2gb
276
+ uTTwvzghCIbQxrTMxkzQD7BgDAVgAHRcDcowC7WAEzugyZWLAy0AvUKQs8i7I8rcD3fwB4Ic
277
+ yH8QC1VwBzhxB9XMwsTstVcrCIrQDwewCrirB2x8fv3ABOQcwjixCgdwzobwzetLuGELBqCQ
278
+ Ew5AAPTcsg4ABgTQDQSwDGBwxawcua9LxLNcywjdxJBAD7tMx9/wDe4gArCwwno8uS3gAlnw
279
+ vi/7zNEszXFwC7fQ0VXAwoactjhxAW+cE0xAy4HwwbTcxDmxCBewBP3/ALqF2wI5gQDCgBMK
280
+ gAmY8AqsgBOoLAlEjc9g8ApE/QpYDAq50AzNsMqYXMZzy8n9IAcyjdAIrQc48QznYAzHQMfi
281
+ cA/DcMJ33LhSHbd2mwUwOwQ3IAY3YATODM0e8Ae3QAkjnRSjEM1/cNfx/LU0cNIzvcSNgNUI
282
+ 3QhL3MgzXdOQO8AToAtFcMdgIAn1nBQMQAAKsAxJwQq5gMViXM8IYAuD0ACK/bgb3A9usMaE
283
+ TcvfzAt03NqubcKwIMyDO7ctUNo40QRIAAcykBQCoAq62qu8+sWqIKxK8cceEAeErBS4ewcd
284
+ Hch8gBPEjNMrndrUTcs0bdM33Q+1UARFAAxJ/4EADTAI0RDMSREMO50TEwAMRfALyIsA7NDd
285
+ +NvXfysEyHsJ1U3LWo0AlvDa/G3Cs7DCO+DAoovG/TAEW7AFFiAGe4ATAjAJQmsHhTAAEkDZ
286
+ OZEOq9ALzFAJuAvIzT3IOVy3OBEIj8AE9n3ftGwIS/DB1w25ON3Y3M3eOu3Y3L3ed4wAv8Dd
287
+ wGALtRAMMs7dgzAIusAO5z3QcosDBN4Pg23ibEzTE9DfvMzfzkDeLOwCbUvV/YAEXGABQ6AU
288
+ qXC+nkCu3x0P2lAJlbAPftzhzv3hapsVg20Ih43VKA7CSzC/kmwILAy5aJwDwTAIM97nfv7n
289
+ fw4M0RAM+JsUwxy3sP+cE0mu5Gw8v8nw2gZQAMbw2uIgApYg5Vh71qUtA1FgAT+wBTkB1/0A
290
+ vEHrCqkgCiqbFQhwAPFw5mg+0r275jjhCONg2oFA5/2A2G3cCDghB0twBv3gCBmQ6zjxuJzM
291
+ AJzdDxOw47ZgC9Hw49Ae7T/+C81eC5iOE6wgCQqAxR0Q62tLA1M7BThR4ozOxgr92gkg6a5d
292
+ DcVgDSYMCYZexrAMBxbg6VveD+tw2/0gCqTurV6cq7kK5mIcCrHA4a3wDlCdEzVcBThMCYKM
293
+ w9s869uQCOdM044gC/0gCLVMcY5g2sBeCsOe0jvgA2f97WrdDwQAyjaLEwzAz5KACQrwCgT/
294
+ kPA1XfI9iwBYwAOmXe60zOus7drHMMeujQ7FENHvjhO429c43Q9sUO8/cO8ZcA/60A9NkBOi
295
+ 8NtlMNyVQ8McLsijEAo64vB0fedp2wJH3vEd3A/2QPHTrQfpjBMUb4vBjhM0nRM5sL9v28dv
296
+ AQqS4M/4jBOgENCCP/isgM/73NQ+3Q2TnRMvcAN4PNte+78IkAY2UNWozfMX8Mgl3N+ubQ3V
297
+ MNYnjBNYQPZce7kIXu+OjxPZgAvbgBMvsNs6cqu+DfAALwATnhR38A6t0Ap3XbvksArd2w9/
298
+ MApYLN/8YNv9EMY5wfG0cM4XIAg44QYXgBPNnxU03QZa0AbCXPJc/9vHQ/D6EbutE04An5zs
299
+ rNAMmCDZOBHZmIDZYkwABIATFSAKolDg9c4FW47dXAsEOAEQNijU6ffowkGECRUuPCioHyQR
300
+ yoaJoFhRxDkDFjVO6GejTT8c/PjR6NfvhwWURkrKo4YL17p+cCxEgTOkZIUBk+xw4NnTJ09P
301
+ hQY8KFm0ZLpelZSC6xfKg4N+AY6EFCmyQ0mC/SRw4+bNaEkmF4w2+vpgALaSZHlQoIAFQb8d
302
+ VeWKpBGg356TL/oJ4FmoHwMwJSUIEFCUFYOvRQeMkWB0DM8y/WSgnKmSqkgf/Z6w5dFvCUPQ
303
+ DA3J6edMBLpiyjSKSFDg2GoRs0pSmAJSZP8LyZS5FM3mEle43BZ+qByw8+dx5GWIfvV1YBqz
304
+ Vf34eCg5V+SRfggEfhUwQBU2eNz6MVmidXk/b/Cw5cMnoEJJ0nTYUkjz9o11zP2anLSgly/P
305
+ wvqpIJWeXAlwLzs8GeC9CgrpqRBRBHgMsuBQkqGfFuS6CgvO+lkkNBAPCkSRfiKgaJ5iJtKo
306
+ ngIy0oiYt+qAojqRXOhnC8r0KimDcKihJpuSUNLrAeSK5MkOod4rygFKQkGsqLfu8ACxy0QC
307
+ oiSBKCjpGloSA6u8ChrzsiRHisqSLYJcwI+fHfphI8e9fJpEp+NcKaQQ44w8bpIKLbgww6rs
308
+ SgPNgkIE0SEEiKH/SBlXrFntGHpgq6WfNijQAq6qeriLsh9KUukrI4TUKk89gxLFKAYouUUa
309
+ D1r1IA4+qjAqDlnVlCuztdgqSQcd2kGmFFm6LOqMMR2RxRx1ttFhmy7PHKgfW60LEs7/9LS2
310
+ 1MZu4LQkIOQSlK1L5dDDUIYCKWkW2NLVCJLs0ICith6qwqEfI/jzUz8kbJIMDnubEDAVV47z
311
+ pIwxBhCzpDv4GMVVhhkeRVajohVJiH7k07UfXjPWuMySSknk40Q0FlmWjuaj4KP78JsWpShK
312
+ cvBamH8q5L0h7IUjqrmu0mK+j+Q4wxByEyqvFnWLFgGWkjh8Ame52kSCsihUMuIGeymz/4AL
313
+ f8cc04Equg6FDz5aiWPssWO546sdsuhWriz62Zmt2q4ROWNkMuhnnLnzrrsfNObDop8caFiz
314
+ pCis3qIkAfCM2VpXVBGzZt1UilcuTaeAgi0oOitJkUcWGdfQ8kw02iJikmmAI80oWNo2uXDr
315
+ 52mW9TUCCTGqRomNPbI2yggZLtT696KEWJMfGzdjqwYyzUGmnbybzziRUjjOlb63JJ6rbdgp
316
+ u8GoB1RJpYwyYh64kDHcK6oJbSPvpwP87GrjcnD7SEwOJpgQ5Az8z1hi/yUc2mV0ETgDEpOC
317
+ Ug3S8JF+TG4umurHEF5AGTboroFIuMELHmg1DELNgha8wRZk8P+p8/VOdzlQIH6u5Lb50KE2
318
+ RTFWKUpxDZDFUB0uDJZREFAD+LkFLoJbk+vSB7WaaO0BhCEiYZSUmCbQDoNwUMkOeDgXHOSg
319
+ H1NwFhSwUAMerBB4JXkGbCwxi1lAYheoKwkPaoAFNKwuB4DCzxukKBk28IcLW9BXYnjXu97d
320
+ 4AZIwKMMJGiUIWyBCz9gg+/Wt7bh8QM7/ZCR3+qAwC1+ZQpP0AL8bKA5JyaSHwyUwQWt9oMX
321
+ 7NGPkaSXDPZwAzEUDoMRLEkHnmgdHNilHzx4m8nYggYb2IAONeBlHXjwSwROIALDHOZbEoOA
322
+ PlSyLfIrSRZeiR8aUKwoe4ADF1ACyg7/jpKURRmCDLYAhweG0pD9yAIbNanIkiDgCc6igA2u
323
+ WIM+/FKe8uSlFmwAPwqggQ6QtN7wevBGGcQxgxncYEFfYM2BUkYMSPgUCc9JAxul8wlYwKct
324
+ LUoBKDBzTL+sQw0EggYtPMGY6zOnJmnggzYZRQYUFMMLVDmTgopBj+DcoDVBKdM91LEkO/AB
325
+ Is9ZlRZcJZ198OigLnpUKOjyCVrshxB8ek4gSLMkgRQDQhN6VatFQZxGCYAPnplIILhAliWZ
326
+ ZFGPass05FKtfWNLGq7YB6ZK5ak/tZIPsjBWJPbxlNnso9YCIIQezJWuQBUCXosiz47ykpdP
327
+ AKaXstCDr9IV3AgoTUw3KXgDNhjUoHDQY+8S89eSDpYfODhCShNDT8XWwJ42SG0NGMuDkRql
328
+ Ay6okmih2QIfuKADQt1mUXbrAh+0ILK2hWUPjtCBN26zA1lwQWiJWxUavEG3ye3tVzpwhMA+
329
+ d3i4Pa5hqxuV6wZXu9ptQXnL2wMXANe85R3ueAcLBPOmV77qLa97bVve3LogC7vlb387IIT0
330
+ 9qAFgrXv8GhQXunOl79HmG9wB1xgCEdYwhOmcIUtfGEMZ1jDG+Zwhz38YRCHWMQjJnGJTXxi
331
+ FKdYxStmcYtd/GLtBgQAIfkEBTIA/wAsAAAAAPAAlgAACP8A/wkcSLCgwYMIEypcyLChw4cQ
332
+ I0qcSLGixYsYM2rcqLGfR44gQ4ocmdCjyX4kUxI8+VGly5cwDbKcGROkSRQmSpisybNnxpn9
333
+ RrCIAQIEjBAofVq8acKfUxBIkyqdSlXmzBEkQDjd6pREy6oOTYYgwdXphxNfwaqNOfNE1rJw
334
+ P6Rde1AsiQ9wzaKVSrevzZMhSpjAmzevTr5+/9klXNjf2bmJI0s8eYKFisaYU0Bee/IuZq4p
335
+ okoePbmfiRSfU4/YTPVkCdSpucJgTbq2zBOxU89G3Nrk69xwWdC2bdtjU+CYUfD26Ro28rJ7
336
+ iUsv2C8E4+dwvS5na3KEVuxwVQz/n57YYwnwhTVvf9n9O/rs48nT9Qjjfd4V8Ud6dG8fbnT5
337
+ tVXXH1y7KeXRZQOGlx+AU5mXYFnKGdgPWQ+WpR2DkhmH3Ac6jYCZcOup1A9uFUK3IIY1eeRc
338
+ aiRE1Q+CealXEVA01tjPdZh9UNSKmIkXIorMhZCbCcq5hhlaC9mo5JL0pcbhSSiUQBQIPHJ1
339
+ IZCcefgZCKt9pWJjJqTF5AkjjFACCWjCUFRROBYmHIWNqeAikx6V2eWPWLLXDws93smXR3wW
340
+ JleNZKZJZYlhaimoaCvRuVOevcFZVgqHbVZdm1tVGgJWMFRZolOaCdkYfidCWt6EcFF6Ukmo
341
+ FrYbjJ9i/xZDfYWBQJOp8nkkqQqV4tkPCsn1Q2us7+G3QgxF4olrX7o+5WdYpjUm3ArE2mfC
342
+ CLAR+eiyAfZzbLLKDuQRiTF6VG2JLW7LbYYsQQSYrMedO2kMLAgVr5Okhrsuc6Uq5hEKMajg
343
+ qbxg7gUlf5+ZwOi+WIoVA8HPgWAwUAj3uDDDDJrEAqYQC5pvjcACl8J/GJNn0gmwdvzZY0ym
344
+ /Jmc/ZbcW6sq5wYikxVvGbPM/IaQc82COtrPz5hdyTO7J2BqwgrKhbDCvR3bSqeoz32A1NHs
345
+ rtAmDODeRHSsUjN5HnhGY81ZP2OXFaaNUJ8btpLWoTeo2fN5m9fbNQ5L8Jw1fv+dGn50qzUu
346
+ pn7WGILLxMawZNvPKa5v4CJ5FHdehdeoKMG9soQC4jnyKDXkDQ7dWOZsq6zwTCVwnN5hsM4N
347
+ ek/NNoa3jdTWDEO9WHEOpot6+7Pz60uNyCKdIQON3tpB9e4PksBz57dTN9tYvPHPrR2C8k6t
348
+ 1jxMHtUe2+k2po2djmuCoHt/oR3YmPbbu/SlyJWfrHpcMJAwQtdQCjb/c4c9vP7j7ZuIg7AD
349
+ go9VJ3Wx+UAM4vcFw3kGfXX6TJcCSJL92Kd8uVGVSb4wBzwkAQMYwANLkqAGRDTwV+eLjePc
350
+ o0A0OWeCFIwcuSCmQZMwAoQ4xEAmTmKFHCZhAdUZWG7/VlM8mGkMer+LoUI84j+IxYBv/cgh
351
+ DiFwEkRIkQoNvBx2kJI2/J2nbEr8yY0g9gFSWYElUsQAI0aYRipQ8XmNiZ2P+CSxA4ExjBcR
352
+ HlzW9CCWWZElapBiEgCZRgzMYU+YKaDkELgVQD3Fgv7wEZqSiEfq0Owpc0IBC+AoKLRAIJAY
353
+ oKJJ8CBINBZykFrkSvQkByO0kMhH2drP5yqJEUhuxXEzwQl48PNJHJ5xg6U8SSExgMrCVAoV
354
+ n+jEvwgDou+oAEFWE9AsaRm8uMTABEYhwcSwhZy1gRKEUmCJFHxoyjRGIih50Q4EOKGJT+QB
355
+ FQNUDwquwzKyOI6aeUxljFgQ/5XD5Saa48zhGk+ygBxS4SQQGOYhA8UVqa2TE1T8xAz88D4Q
356
+ oYBW2tIjiPA5I0T+k1T+TI3iCprGQwozhzv0SEDTCETlFWkTE/WIJmawCUc6hXSDcwrzOCrA
357
+ S6owgqlBCykLeQiTHOKKh7CCFQt5yOk5xXGkmMEnPAKNGViVotNb5Vi24jqeloZoHGra05xC
358
+ KiGaxSNUGCYG1CCFoao1jeEUVlmiCYE85IGKdbXqDMqhvq2kIAZpus49vfrV9EBxc1Lzm616
359
+ +NbGpjEJv2yb40wxA1J4hLJ6PUXsUhMhwpbmfyMiwQqiQgLHmdUfXpmDY1eLgUj88np5Uc4C
360
+ rErF2f/qdQaaRWdqpunZh7xvrt3jar1UsBqqNcYrX0gra9sYiUOIEm2YUk9UNXHZ285AmXJV
361
+ DSU5asuGNqksUhNfYWAGASnckLVqwMMcTig5FghRajC1bD/ycNup6vYzBeptRDbr3exytUhw
362
+ VIHBOIiIJBj4wElAhBQy8UsosQB7FvLIKa7bj07ctqaXclKR9DsZ73FlUB4WsE2HZEC4ceq0
363
+ XHHchJXpB71CtLvS2m4A1WVJTJFqBUW52QyB84H6rcBOQF5BaUGwP9nJdAbw7IdV80BRn9ZK
364
+ xu0DilXipSZQQRFt1PunR1AxA05AY6ZMHuDKNsxh6hCBEEFQQrvENU8SKMf/PSnw00WzDBxS
365
+ wXTJTdYn5cQEwBn3wwsaCHQXvECEVfnrJDxKQVFSSGfweiSvYR5Rkf1xGEv2uVGQ6wcRwhDo
366
+ ToeBDEABYj8a/SAQLcAUTU5abO64Zmi1GmsmUUIQrtBpDTghDCZZACnNtRUQMI7UscncCCa9
367
+ NsVYMq4hAgoRyBAEUF8aSCwhAyGuAAgzGFW5gCqBwSYNbLjcSbxg2omhPbJWUTdqJkogAyDW
368
+ 0OkrQDljNFrAN9l7Ek52eyva2Wqwxd2P53qEsViskRmCMO1a2zoMAHg3vLtngqP0e6iuPUSB
369
+ qXDGJiYoVO6NlYi9NeknSUWljEBESiOBQxHG2gvr/zZ4oK/waUODziQrcM4HunTUNJ4wBJZJ
370
+ 0AeSNYJfjy/fFucqCABrKJL5i+QgpAIoGfFakwRB5V0IQsJfTTevpdMjXzgvDj2i5nHFgNuY
371
+ gUG+cM5ozGSUm2URu9D6sdKkI/sucfaIGZzAcjIU2uWv843qHA4BpK+1H0rQwKBdY+/GpMDN
372
+ J4sBisHbJV2Chp8mAYAXgkB5M1ibRm2PhKjR7pTT3R3vwJOcz/26l4AeEtCBvvXUf/X1AcGg
373
+ V25J4QcyOpbrKJLrbqC1ygXdhTBQ3gv9YKwafjnn8CRLiawEzmGs4MZ+AELlayC0bwovqKUB
374
+ Rsjm63UMxv5As+RL2rsP///K0WrS2jeGZTHMaTf5pgRAOMHgqr9J6/sz+xJcmSU9D09UvECI
375
+ qAchDO8nfgbXdd2DYugXZZIGHkZ0Ai7ydNAnfeZBfXFiAvXCc/qTF0b0ebEmgAbnBv9ibwcY
376
+ ekEBdnAxLo5hAnvBbrt3a5f3KySweJ9iQHzDgbUWBHZTNUZXdWIGHoOyIkihguJ3BW7weSsA
377
+ YeBxLWZlP1JCApkTeDSoAWtQaJLCY2Smg04WMfflD7bihE8YBi2IAi/YH2vjN3+FP0QAhAKI
378
+ a/yFHEZkhaOXG14hPluoe0+oAUJIhG8YJ1HxMyqgTTRiBnSYhpKDZegRNmajIQOCHxYXTf0A
379
+ AG7/QAgB2IXOVh0Zx2Muci8qkBP31w9m0AV1uAYRmIXYUWxHg4gDghQpQ1wsoQQoh4ZBmGYn
380
+ MxixsRqK8AhoYwL2MyeBkRMesWyVd3dK4Im7F4XoZCs7hh2DVTI7aB+z4VRcdTuVM3AFJ4CE
381
+ MIkTUj7YWD86IQd6sAgz4TQB00iAt3qrOIyFpmq+M2r9UWkYY4IPohPgdjeixX7MJowrCAjk
382
+ qCSXcAGBUCck0CmxRRkPlgJPQgQqBwjq5w/KUXafkYPLEkQVghTUlwLQOBOSBwj2WGtqCGQc
383
+ iRRMcAEgqQjRYnhoIoudVySc1m6Xx0hk1Q9BBx7p82zd8pLvESbO+Bwq/xAD2maRKCeMoKiO
384
+ e+QRhgCSF3AJNxgbKQB5gEcInVaNkvOSiuNh75FfD/krJYIWU2gfOiJa+NN18Uhp/SAIRHkB
385
+ hmAeXSMUMAIDBqMEbtB7btCCaOMp4mFc9kEq3AJjF5RhxLKVTNMdHIMUejCWF8AESjICl7GJ
386
+ 4xKGjaEcRogcMvKQN/keWFkzh/JkACCYF7AETPAISzCWgbAIgsBKIFACd7IpQgYDkyYcX4kd
387
+ 7AgpTFQhijM53WYrH4mZtkmUhiCSevYc6kGChqdwYOERvml4SEGTWcYr/VCbt3mbgSAH/QCD
388
+ EnSF4NGaDXOM77Ea1pllN+MGy9mdhCmBeTEbsv/JjMAZOgzVH14RUsAGIoKwCIHQncuZcOCZ
389
+ F2hxnvZxNXmyhsdjiqSmHo0An92pB7yWIFLDkJ8BOPkpOmI4YsDmFdwJoMsZmqu5S3rUH8mI
390
+ Ivx5hMtIal5xBra5CPtIlI0gCO85lkuAl1qJFPYJHryFIfqJHI4zodTTobbpnGNJmIowlCCp
391
+ B84plQmyG3moMzLJLD76URvaoGGJmd4oB2MpoP0gB4JwBh6YgLECIgZ6N+UpIcMJAkUSpMbj
392
+ I4E5liKpnCBpiyyhNeeiE+pJQFnKLyuaGaSyOfd2Hx5xBkNpCFP6oLipK6V1pTyIFrAFHlTZ
393
+ MCP5GTXUfXP6YSXmEWT/CpLyWTMz95rYsVGu+aJmcS0wB52kpnbdoziXKZgiOZ/vcRhoihyd
394
+ ZSo3sUlEVhT2AyV+mqhOgRSdSZROOpwDchiB+j1tWhVTY6uJKhxywJmL8AjOKaPV8jHekRox
395
+ yTBSJi7SCaufQTrDRj3RdGhBQTQqUIWBIznQSjZFUhm+qpVd5WBE1muVwh1rl67quq7s2q7u
396
+ +q7wGq/u2gH0Wq/2eq/4mq/6uq/82q/++q8AG7ACO7AEW7AdsAMnEQAGu7D0yg8O+7AQG7ES
397
+ O7EUW7EWe7EYm7Eau7Ec27Ee+7EgG7IiO7IkW7Ime7Iom7Iqu7Is27Iu+7IwG7MyO7M0W7Mo
398
+ /wsEPuACLtADOGCzPvuzQBu0GEsDRzATOyC0SJu0SguzOICw/VAFfMAHocAA/eACLeCwLZC1
399
+ NLC0XNu1XnuxOJAD/cAAceABZusBlFAjPfC1bNu2KYsDLZCzQlCvYmsjdNsPd/AHZ2u2fxAL
400
+ VXAHHnEHf9sPOdCzbnu4HEsDWZuzLnAE/SoEOusDWduyLeACWeC07pq3e7u5nFsFhLu2iBu6
401
+ EQsEb2C5mOuuOdABRyC5I0sDPZAFM9EEMoAENwAHL/ACbCAGt7u7N3ADuysGN2AEeKu3nFu8
402
+ fOu5/SAEohu6byAEAQAUPMADdVADNUAHNnC92Ju9NkAH1PsEPNAGQP/RAT4ABB3bAkJwEk2A
403
+ BLb7Ay9wA0ggA0Owdg5AvMZbv3zgEYa7vBILtz2gsy7Ar1kQuZNbsjggBHXrEdKrBTZAAQzc
404
+ wA78wBD8wGhgAzXQB1NwEjvQA1t7sUDQASYxBHDABRYgBkjQBDQiuzKQwrN7A1sgAybsEQww
405
+ CvU7w2abti6gv/yguP/7vKjbAS7wBhvMsTjgwR4xBXWABRGcxEq8xAyMBlrQByaRAzdcsT5g
406
+ EkggwlGABML7wbR7uxbwxWAcxj+ABCfRCjRMw/c7xRrLv/6bBfjqv2/QAkFMsjh7uh5hBDKw
407
+ B73ru7vbx7fLBr37vi+MwUeQvxdbtB7xBAv/zMSMrMRQwL080Ac1oAVoQAFQoAUX3A87MMcP
408
+ e779IANRYAE/sAUm0QRbIAZhnMqq/APx2w+U0AoyfMYz7LlvcLGVmwU8rK6q2wPk+7EtALtc
409
+ zAYvoMrEXMxgzAVi0MIn0QG1XLE04LR9UMmNPM1JbANP0A+1AAm80A9PAAUMTAcIoMmcjMhw
410
+ 8MWs7BEygMrGTMznTLayLMtUa8gQa74HXMSRTL01gAXaiwX4HL1G6wOcbLE0AMyfzAahvM4I
411
+ vc4/QMIm0QEB7bAIiwBITM0UXc1TEAGWYAkR8AQNnAbhrLwP2wIewQbmHL9GoM4JncqkzAD0
412
+ +87G+we3QLgT2wJE/9wPU/AE1lvRDYwG/MwDUewCDx2xYesRSHDQKX3UxvwDN+AROdDLEFu0
413
+ CJAGOj3VDwwFbdAAIgAJHN3ANiDTD+vBWwDGS20ERo3UouwRZevS9TsKVJu8EuvJCPAEUj3V
414
+ aEC9WuDNDHzJ4CvOFjvUQyDC7GvWgq3KXBC/HTC6HrHIVL3YFIAGCJDVNfDA4Gu4NOARPwDG
415
+ wjvMg20BL4C3aj3DDtAPAVDIEUvEdYDXO03NaBCWZ6AIEv3AWBDOR0uxNPC8e3DZFrAH6Oy7
416
+ my3YUSC8hlzFW83Yi40FEyACsNAHD3zBhivSMnDM/dAEvW0BXNAPDvDZ9esREwvViu3Abf8w
417
+ BRPNxHSgnI3QD9Lc0eHczBJbxU2A2xYgAzOB0mKs2dMNxvB9tV/dD+FN3Drt0ckgApaAAOcN
418
+ BdrtsC7QD2H9xZ393NPtEdhtvPGM2P3Q3Q1MB4pQ3o1sA2QqCHQAwXVQtRSLsCQt1v2wDK8A
419
+ BiOdylEA39FN39N93xD7vHPN3xXt0c8A4A2AAKitBZr8sD3QD3sAxj/gEWUt2B4hDQ/euSAO
420
+ sVXMA0k8BQBwCQBA4RE83jeqBR6+5BLrEam81KygAFSLBKrc2SeBBO492EPeD07NDzJO4xUN
421
+ BVMACciNANHcwHDeD6DLDzjQD0bg3vA9BEWO1Lp9B7H82dIQC1P/axJq7LDn2+FJjAVPIOBM
422
+ bAPcuKOXoOMQDL7qHbFcHsZk7hFDcOaY3Q+SAAoe4eKCDQeiXdr9gOVuPs1WvQsi0ABTQOHX
423
+ HAARi7Bi/sW/zec3IOop3etPWwXEXuxVEApR2wpxsOzLHguAi8FZsOb8ALuuztg18AgXsAgA
424
+ MAV9MOMNjAWEG9REnspsILxkXcxk3Na33dtcILx57rA/PgWo/epJXNcIIOvOMAG2jr8RK9L9
425
+ sOsWEAWtbARIIAbArtBk3K4gPbEHPtyLPd5MgADV/sAereUSC7sAL+Q3IMLFLAZ3POKb3e79
426
+ cNgS+7xtMO/03sB1kMkRoM39ENkdvdfv/+7joE7fbDDI/TAEXYzqxRwFfczCMrDFpZzCg5wD
427
+ My/hEz/VUFC9KP/tsh3U/ODvNzDYeRzoSA0HwrvJEzvUtZ7yD6wF+Ey9dHDeaHDNhIvfE/sG
428
+ dSsDbIDbXLAFrTwTeKzCMhDIdI/zJzEEW8AFP8AGLD7y0r7dHnHaXk8BNuDTfG2xP/7JPF/f
429
+ 63zzHuHQFYsDPMwDSV/4sA3FHpEFUO+wNODJHrEHIWzO7dvCeM8kQyADW2C7nH0Df98PWYD2
430
+ GIvIcU3lVI0GdLDXFq/4a9/2jm/MJLzFRj+0B+4RcY0FTf/qThzpDS37F0sDPmDHK6y7Ru3z
431
+ v9u7tru7gP0CwP+7B3HvETswvh5L0yZB5zVgA97OyFCwvU+QyR4hBIFvsUAA+jl/yhw/3T7v
432
+ +gkL0BsLEEBcBOhXsN+UJzVspKHQ0OFDiBEbpsFSo88Ug/0CHAHCz+NHkCFDAvGRhWDGjE1k
433
+ rJSx58aNLSxXoswYQEiPjiJ17uTXQshJlDyE1qlRtOgToW1o9svSgwZPqPxI7qA5RAaSl2xe
434
+ bOXaFc7LmShttogKFccRqkuF8jBaVIsNG21rIOWBYGkHFzjK7vVIo4UPFx06LCWMUrALHy2e
435
+ 8mWMo8eRDjkKE+6QxQVZxlFpvAksefLngh2O4Mxc9i9koKAJBxCduPTrkC1ky+7hAvFSbNmL
436
+ Ye/+CGS2beC3ZfN+LRuwiyyClS/vIMR2jxY5iTP224JzcOVHgieOPt37d/DhxY8nX978efTp
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