mms2r 1.1.11 → 1.1.12
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/History.txt +6 -0
- data/Manifest.txt +1 -0
- data/conf/mms2r_sprint_media_ignore.yml +2 -0
- data/lib/mms2r.rb +1 -1
- data/lib/mms2r/sprint_media.rb +17 -2
- data/test/fixtures/sprint-purged-image-01.mail +195 -0
- data/test/test_mms2r_sprint_media.rb +34 -0
- metadata +3 -2
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 1.1.12 / 2007-10-21 (Dr. Ronald von Moldenberg - Endorsement specialist)
|
2
|
+
|
3
|
+
* fetch orginal images from Sprint content server (Layton Wedgeworth)
|
4
|
+
* ignore Sprint messages when requested content has been purged from their
|
5
|
+
content server
|
6
|
+
|
1
7
|
== 1.1.11 / 2007-10-20 (Dr. Armand Skagerakk Frederickshaven)
|
2
8
|
|
3
9
|
* minor fix for attachment_fu where it might call #path on the cgi temp file
|
data/Manifest.txt
CHANGED
@@ -89,6 +89,7 @@ test/fixtures/simple_multipart_alternative.mail
|
|
89
89
|
test/fixtures/sprint-broken-image-01.mail
|
90
90
|
test/fixtures/sprint-image-01.mail
|
91
91
|
test/fixtures/sprint-pcs-text-01.mail
|
92
|
+
test/fixtures/sprint-purged-image-01.mail
|
92
93
|
test/fixtures/sprint-text-01.mail
|
93
94
|
test/fixtures/sprint-two-images-01.mail
|
94
95
|
test/fixtures/sprint-video-01.mail
|
@@ -1,4 +1,6 @@
|
|
1
1
|
---
|
2
|
+
text/html:
|
3
|
+
- !ruby/regexp /Ze're sorry, this page is not available. We apologize for the inconvenience./
|
2
4
|
text/plain:
|
3
5
|
- !ruby/regexp /^You have new Picture Mail! Click Go/View to see now./
|
4
6
|
- !ruby/regexp /^You have new Video Mail! Click Go/View to see now./
|
data/lib/mms2r.rb
CHANGED
data/lib/mms2r/sprint_media.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'rubygems'
|
3
3
|
require 'hpricot'
|
4
|
+
require 'cgi'
|
4
5
|
|
5
6
|
module MMS2R
|
6
7
|
|
@@ -117,7 +118,14 @@ module MMS2R
|
|
117
118
|
cnt = 0
|
118
119
|
srcs.each do |src|
|
119
120
|
begin
|
120
|
-
|
121
|
+
# clean out the limiting parameters for images for the content server
|
122
|
+
# to get at the original image
|
123
|
+
url = URI.parse(CGI.unescapeHTML(src))
|
124
|
+
query={}
|
125
|
+
url.query.split('&').each{|a| p=a.split('='); query[p[0]] = p[1]}
|
126
|
+
query.delete_if{|k, v| k == 'limitsize' or k == 'squareoutput' }
|
127
|
+
url.query = query.map{|k,v| "#{k}=#{v}"}.join("&")
|
128
|
+
|
121
129
|
#res = Net::HTTP.get_response(url)
|
122
130
|
#lets be vanilla stealth
|
123
131
|
agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"
|
@@ -125,11 +133,18 @@ module MMS2R
|
|
125
133
|
req = Net::HTTP::Get.new(url.request_uri, {'User-Agent' => agent})
|
126
134
|
http.request(req)
|
127
135
|
end
|
128
|
-
rescue
|
136
|
+
rescue StandardError => err
|
129
137
|
@logger.error("#{self.class} processing error, #{$!}") unless @logger.nil?
|
130
138
|
next
|
131
139
|
end
|
132
140
|
|
141
|
+
# if the Sprint content server uses response code 500 when the content is purged
|
142
|
+
# the content type will text/html and the body will be the message
|
143
|
+
if res.content_type == 'text/html' && res.code = 500
|
144
|
+
@logger.error("Sprint content server returned response code 500") unless @logger.nil?
|
145
|
+
next
|
146
|
+
end
|
147
|
+
|
133
148
|
# setup the file path and file
|
134
149
|
base = /\/RECIPIENT\/([^\/]+)\//.match(src)[1]
|
135
150
|
type = res.content_type
|
@@ -0,0 +1,195 @@
|
|
1
|
+
Message-ID: <01234567.9876543210987.JavaMail.jkdos@lalal09>
|
2
|
+
From: "someuser@pm.sprint.com" <someuser@pm.sprint.com>
|
3
|
+
To: tommytutone@example.com
|
4
|
+
Subject: You have new Picture Mail!
|
5
|
+
MIME-Version: 1.0
|
6
|
+
Content-Type: multipart/alternative;
|
7
|
+
boundary="----=_Part_012345_67890123.4567890123456"
|
8
|
+
X-Priority: 3
|
9
|
+
X-MSMail-Priority: Normal
|
10
|
+
Importance: Normal
|
11
|
+
|
12
|
+
------=_Part_012345_67890123.4567890123456
|
13
|
+
Content-Type: text/plain; charset=us-ascii
|
14
|
+
Content-Transfer-Encoding: 7bit
|
15
|
+
|
16
|
+
You have new Picture Mail!
|
17
|
+
|
18
|
+
Click Go/View to see now.
|
19
|
+
http://pictures.sprintpcs.com/?mivt=helloworld0123456789&shareName=MMS
|
20
|
+
|
21
|
+
_abcedef
|
22
|
+
|
23
|
+
|
24
|
+
------=_Part_012345_67890123.4567890123456
|
25
|
+
Content-Type: text/html
|
26
|
+
Content-Transfer-Encoding: 7bit
|
27
|
+
|
28
|
+
<html>
|
29
|
+
<head><title>You have new Picture Mail!</title>
|
30
|
+
<!-- lsPictureMail-Share-helloworld0123456789-comment
|
31
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
32
|
+
<shareMessage>
|
33
|
+
<messageContents type="PICTURE">
|
34
|
+
<messageText></messageText>
|
35
|
+
<mediaItems>
|
36
|
+
<mediaItem id="1">
|
37
|
+
<title></title>
|
38
|
+
&lt;url&gt;http://pictures.sprintpcs.com/getMMBOXMessageMedia?id=Xw1004H8sLv6S3x76lVPYvc9HWuygho0mqG1a5IEKWLR8s8O0GEqXAmk5gW%2FZUWGqyw0fwJJvr7U%0AtWtQs5%2FZA7tmYNq7KKkBMqlL64JVNH%2BGkNKbb8WqPL%2FsrHZdYUVet3SRzN1GfrfUo%2BpWfjCBBg%3D%3D%0A&lt;/url&gt;
|
39
|
+
|
40
|
+
<urlExpiration>2007-03-11T21:14:27Z</urlExpiration>
|
41
|
+
</mediaItem>
|
42
|
+
</mediaItems>
|
43
|
+
</messageContents>
|
44
|
+
</shareMessage>
|
45
|
+
|
46
|
+
-->
|
47
|
+
<!-- lsPictureMail-UserInfo-helloworld0123456789-comment
|
48
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
49
|
+
<UserInfo timestamp="2007-03-04T21:14:27.96+00:00" originating_from_address="someuser@pm.sprint.com"><credential name="MDN">2068509247</credential></UserInfo>
|
50
|
+
-->
|
51
|
+
</head>
|
52
|
+
<body marginheight="0" marginwidth="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
|
53
|
+
<table border="0" width="100%" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" >
|
54
|
+
<tr>
|
55
|
+
<td VALIGN="top" colspan="2" width="100%">
|
56
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#FFE100">
|
57
|
+
<tr>
|
58
|
+
<td><a href="http://www.sprintpcs.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/togetherWithNextel.gif" alt="" border="0" /></a></td>
|
59
|
+
</tr>
|
60
|
+
</table>
|
61
|
+
</td>
|
62
|
+
</tr>
|
63
|
+
<tr>
|
64
|
+
<td VALIGN="top" colspan="2">
|
65
|
+
<table border="0" cellpadding="0" cellspacing="0" width="590" bgcolor="#FFFFFF">
|
66
|
+
<tr>
|
67
|
+
<td><br/><p><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="10"/><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>You have a Picture Mail from someuser@pm.sprint.com</b></font><br/><br/></p></td>
|
68
|
+
</tr>
|
69
|
+
</table>
|
70
|
+
</td>
|
71
|
+
</tr>
|
72
|
+
<tr>
|
73
|
+
<td colspan="2">
|
74
|
+
<table border="0" width="590" cellpadding="0" cellspacing="0">
|
75
|
+
<tr>
|
76
|
+
<td width="10"> </td>
|
77
|
+
<td width="280" valign="top">
|
78
|
+
<table border="0" cellpadding="0" style="border:1px solid #9C9A9C;">
|
79
|
+
<tr>
|
80
|
+
<td>
|
81
|
+
<table border="0" bgcolor="#ffffff" cellpadding="0" cellspacing="7" style="table-layout:fixed">
|
82
|
+
<tr>
|
83
|
+
<td align="center">
|
84
|
+
<img src="http://localhost:99163/mmps/RECIPIENT/000_0123a01234567890_1/2?inviteToken=helloworld0123456789&limitsize=258,258&outquality=90&squareoutput=255,255,255&ext=.jpg&iconifyVideo=true&wm=1&HACK=PURGED"/>
|
85
|
+
</td>
|
86
|
+
</tr>
|
87
|
+
</table>
|
88
|
+
</td>
|
89
|
+
</tr>
|
90
|
+
</table>
|
91
|
+
</td>
|
92
|
+
<td width="20"> </td>
|
93
|
+
<td VALIGN="top" align="right" width="280">
|
94
|
+
<table border="0" cellpadding="0" cellspacing="0" width="280" style="table-layout:fixed">
|
95
|
+
<tr>
|
96
|
+
<td><p><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>Message:</b></font></p></td>
|
97
|
+
</tr>
|
98
|
+
<tr>
|
99
|
+
<td><pre style="overflow:auto; font:normal 10pt trebuchet ms; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"></pre></td>
|
100
|
+
</tr>
|
101
|
+
<tr>
|
102
|
+
<td><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="15"/></td>
|
103
|
+
</tr>
|
104
|
+
<tr>
|
105
|
+
<td width="280">
|
106
|
+
<div style="padding-left:10px; padding-top:4px; padding-bottom:4px; color:white; background-color:#59639C; font: bold 10pt trebuchet ms" width="280">
|
107
|
+
Options
|
108
|
+
</div>
|
109
|
+
<div style="padding:10px; background-color:#f1f1f1; font: normal 10pt trebuchet ms" width="280">
|
110
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=MMS&messageState=RETRIEVED">View Picture</a><br/>
|
111
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=PRINT">Order Prints and Gifts</a><br/>
|
112
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=REPLY">Reply to Sender</a><br/>
|
113
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=REPLYTOALL">Reply to All</a><br/>
|
114
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=FORWARD">Forward</a><br/><br/>
|
115
|
+
Send and receive Pictures and Videos through Picture Mail<sup>SM</sup>. For more information go to <a target="_blank" style="color: #148AB2;" href="http://www.sprint.com/picturemail">www.sprint.com/picturemail.</a>
|
116
|
+
</div>
|
117
|
+
</td>
|
118
|
+
</tr>
|
119
|
+
</table>
|
120
|
+
</td>
|
121
|
+
</tr>
|
122
|
+
</table>
|
123
|
+
</td>
|
124
|
+
</tr>
|
125
|
+
<tr>
|
126
|
+
<td colspan="2">
|
127
|
+
<img src="http://pictures.sprintpcs.com/images/x.gif" width="5" height="15"/>
|
128
|
+
</td>
|
129
|
+
</tr>
|
130
|
+
<tr>
|
131
|
+
<td align="left" colspan="2" width="590">
|
132
|
+
<table cellpadding="0" cellspacing="0" align="left" bgcolor="#FFFFFF">
|
133
|
+
<tr>
|
134
|
+
<td width="10"> </td>
|
135
|
+
<td width="580">
|
136
|
+
<table cellpadding="0" cellspacing="0" align="center" border="0" bgcolor="#FFFFFF">
|
137
|
+
<tr>
|
138
|
+
<!-- AdJuggler 5.0 request
|
139
|
+
Ad Spot: email_picture-mail-invitation_1_120x85
|
140
|
+
Channel: Undefined
|
141
|
+
Ad Dimension: 120x85
|
142
|
+
Category: Undefined
|
143
|
+
Sub-category: Undefined
|
144
|
+
-->
|
145
|
+
<td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/viewCGI?zone=1&dim=135" border="0"/></a></td>
|
146
|
+
<td width="30"></td>
|
147
|
+
<!-- AdJuggler 5.0 request
|
148
|
+
Ad Spot: email_picture-mail-invitation_2_120x85
|
149
|
+
Channel: Undefined
|
150
|
+
Ad Dimension: 120x85
|
151
|
+
Category: Undefined
|
152
|
+
Sub-category: Undefined
|
153
|
+
-->
|
154
|
+
<td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/viewCGI?zone=1&dim=135" border="0"/></a></td>
|
155
|
+
<td width="30"></td>
|
156
|
+
<!-- AdJuggler 5.0 request
|
157
|
+
Ad Spot: email_picture-mail-invitation_3_120x85
|
158
|
+
Channel: Undefined
|
159
|
+
Ad Dimension: 120x85
|
160
|
+
Category: Undefined
|
161
|
+
Sub-category: Undefined
|
162
|
+
-->
|
163
|
+
<td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/viewCGI?zone=1&dim=135" border="0"/></a></td>
|
164
|
+
</tr>
|
165
|
+
</table>
|
166
|
+
</td>
|
167
|
+
</tr>
|
168
|
+
</table>
|
169
|
+
</td>
|
170
|
+
</tr>
|
171
|
+
<tr>
|
172
|
+
<td VALIGN="top" colspan="2" width="590">
|
173
|
+
<img src="http://pictures.sprintpcs.com/images/x.gif" height="5"/>
|
174
|
+
</td>
|
175
|
+
</tr>
|
176
|
+
<tr>
|
177
|
+
<td VALIGN="top" colspan="2" width="100%">
|
178
|
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
179
|
+
<tr>
|
180
|
+
<td bgcolor="#f1f1f1" align="left"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="385" height="15"/><span style="font-family:trebuchet ms, Helvetica, Arial, Verdana; Font-size: 11px; Color: #000000">© 2007 Sprint Nextel. All rights reserved.</span></td>
|
181
|
+
</tr>
|
182
|
+
<tr>
|
183
|
+
<td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="20" height="5"/><a href="http://www.verisign.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/verisign.jpg" alt="VeriSign's Home Page" border="0" /></a></td>
|
184
|
+
</tr>
|
185
|
+
<tr>
|
186
|
+
<td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="10"/></td>
|
187
|
+
</tr>
|
188
|
+
</table>
|
189
|
+
</td>
|
190
|
+
</tr>
|
191
|
+
</table>
|
192
|
+
</body>
|
193
|
+
</html><!-- picture_mail_arrived -->
|
194
|
+
|
195
|
+
------=_Part_012345_67890123.4567890123456--
|
@@ -30,6 +30,28 @@ class BrokenImageServlet < WEBrick::HTTPServlet::AbstractServlet
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
+
class PurgedImageServlet < WEBrick::HTTPServlet::AbstractServlet
|
34
|
+
def do_GET(req, res)
|
35
|
+
res['Content-Type'] = "text/html"
|
36
|
+
res.code = 500
|
37
|
+
res.body = %q!<html>
|
38
|
+
<head>
|
39
|
+
<title>Pictures from Sprint: Error</title>
|
40
|
+
<link rel="STYLESHEET" type="text/css" href="/retailers/PCSNEXTEL/main.css">
|
41
|
+
</head>
|
42
|
+
|
43
|
+
<body LEFTMARGIN="0" RIGHTMARGIN="0" TOPMARGIN="0" BOTTOMMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
|
44
|
+
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#F1F1F1" width="386">
|
45
|
+
<tr>
|
46
|
+
We're sorry, this page is not available. We apologize for the inconvenience. Please go to <a href="http://pictures.sprintpcs.com">pictures.sprintpcs.com</a> in case you are using an old bookmark, which is no longer valid.
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
</table>
|
50
|
+
</body>
|
51
|
+
</html>!
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
33
55
|
class SimpleVideoServlet < WEBrick::HTTPServlet::AbstractServlet
|
34
56
|
def do_GET(req, res)
|
35
57
|
res['Content-Type'] = "video/quicktime"
|
@@ -69,6 +91,8 @@ class Net::HTTP
|
|
69
91
|
SimpleImageServlet
|
70
92
|
when request.query['HACK'].eql?('BROKEN')
|
71
93
|
BrokenImageServlet
|
94
|
+
when request.query['HACK'].eql?('PURGED')
|
95
|
+
PurgedImageServlet
|
72
96
|
else
|
73
97
|
SERVLETS[path]
|
74
98
|
end
|
@@ -226,6 +250,16 @@ class MMS2R::SprintMediaTest < Test::Unit::TestCase
|
|
226
250
|
mms.purge
|
227
251
|
end
|
228
252
|
|
253
|
+
def test_image_should_be_purged_from_content_server
|
254
|
+
mail = TMail::Mail.parse(load_mail('sprint-purged-image-01.mail').join)
|
255
|
+
mms = MMS2R::Media.create(mail)
|
256
|
+
mms.process
|
257
|
+
|
258
|
+
assert_equal 0, mms.media.size
|
259
|
+
|
260
|
+
mms.purge
|
261
|
+
end
|
262
|
+
|
229
263
|
def test_body_should_return_nil_when_there_is_no_user_text
|
230
264
|
mail = TMail::Mail.parse(load_mail('sprint-image-01.mail').join)
|
231
265
|
mms = MMS2R::Media.create(mail)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mms2r
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.1.
|
7
|
-
date: 2007-10-
|
6
|
+
version: 1.1.12
|
7
|
+
date: 2007-10-21 00:00:00 -07:00
|
8
8
|
summary: Extract user media from MMS (and not carrier cruft)
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- test/fixtures/sprint-broken-image-01.mail
|
121
121
|
- test/fixtures/sprint-image-01.mail
|
122
122
|
- test/fixtures/sprint-pcs-text-01.mail
|
123
|
+
- test/fixtures/sprint-purged-image-01.mail
|
123
124
|
- test/fixtures/sprint-text-01.mail
|
124
125
|
- test/fixtures/sprint-two-images-01.mail
|
125
126
|
- test/fixtures/sprint-video-01.mail
|