mms2r 3.6.4 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -19
- data/Gemfile.lock +26 -24
- data/History.txt +6 -0
- data/Manifest.txt +1 -0
- data/README.txt +1 -2
- data/Rakefile +7 -41
- data/dev_tools/debug_sprint_nokogiri_parsing.rb +1 -1
- data/lib/ext/object.rb +12 -4
- data/lib/mms2r.rb +0 -5
- data/lib/mms2r/media.rb +1 -0
- data/lib/mms2r/media/sprint.rb +51 -1
- data/lib/mms2r/version.rb +25 -0
- data/mms2r.gemspec +28 -40
- data/test/fixtures/handsets.yml +1 -1
- data/test/fixtures/sprint-ajax-response-failure.html +173 -0
- data/test/fixtures/sprint-ajax-response-success.json +1 -0
- data/test/fixtures/sprint-image-missing-message.mail +183 -0
- data/test/test_helper.rb +8 -2
- data/test/test_mms2r_media.rb +2 -2
- data/test/test_pm_sprint_com.rb +78 -0
- metadata +176 -121
- data/.gemtest +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"totalMediaItems":1,"shareType":"normal","nomediaItem":"false","isOnlyVideo":null,"creationDate":"Apr 16, 2012","from":"(513)545-5510","offset":null,"externalMessageId":"GEc4YYms2Y7KAkmhaoFL","Results":[{"elementID":"2","hasVoiceCaption":false,"URL":{"elementID":"2","indexCount":0,"audio":null,"thumb":"http:\/\/pictures.sprintpcs.com:80\/mmps\/031_36415d1a9c3c73f0_1\/2.jpg?partExt=.jpg&&&outquality=90&ext=.jpg&&size=40,40&squareoutput=255,255,255&aspectcrop=0.5,0.5,1.0,1.0,1.0","annotationVoiceID":null,"image":"http:\/\/pictures.sprintpcs.com:80\/mmps\/031_36415d1a9c3c73f0_1\/2.jpg?partExt=.jpg&&&outquality=90&ext=.jpg","video":null},"description":"Just testing the caption on Sprint","mediaItemNum":0,"isDRMProtected":false,"externalMessageId":"GEc4YYms2Y7KAkmhaoFL","mediaType":"IMAGE","restOperation":"false","folderFullName":"\/RECIPIENT"}],"invite":null,"tmemo":null,"toAddress":"submit@CapStory.com","mediaIndex":0,"subject":"New Message","isDRMProtected":false,"expirationDate":"Expires in 18 days","voiceURL":null,"guest":"true","folderFullName":"\/RECIPIENT"}
|
@@ -0,0 +1,183 @@
|
|
1
|
+
Return-Path: <sideshow.bob@pm.sprint.com>
|
2
|
+
Received: by 10.112.114.196 with SMTP id ji4csp42935lbb; Mon, 16 Apr 2012 13:50:50 -0700
|
3
|
+
Received: by 10.68.195.103 with SMTP id id7mr30477156pbc.98.1334609449244; Mon, 16 Apr 2012 13:50:49 -0700
|
4
|
+
Received: from smtp04.sun3.lightsurf.net (smtp.sun3.lightsurf.net. [63.215.195.131]) by mx.google.com with ESMTPS id s4si21720545pbc.315.2012.04.16.13.50.48 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 16 Apr 2012 13:50:49 -0700
|
5
|
+
Received: from pcs-nams007 (pcs-mmsc.sun3.lightsurf.net [10.0.0.152]) by smtp04.sun3.lightsurf.net (8.12.11.20060308/8.12.11) with ESMTP id q3GKoNxU028344 for <submit@capstory.com>; Mon, 16 Apr 2012 13:50:48 -0700
|
6
|
+
Date: Mon, 16 Apr 2012 13:50:48 -0700
|
7
|
+
From: "sideshow.bob@pm.sprint.com" <sideshow.bob@pm.sprint.com>
|
8
|
+
To: submit@CapStory.com
|
9
|
+
Message-ID: <28315302.1330941238231.JavaMail.lsadm@pcs-nams007>
|
10
|
+
Subject: New Message
|
11
|
+
Mime-Version: 1.0
|
12
|
+
Content-Type: multipart/alternative;
|
13
|
+
boundary="----=_Part_313708_25410566.1334609448230";
|
14
|
+
charset=UTF-8
|
15
|
+
Content-Transfer-Encoding: 7bit
|
16
|
+
Delivered-To: submit@capstory.com
|
17
|
+
Received-SPF: neutral (google.com: 63.215.195.131 is neither permitted nor
|
18
|
+
denied by best guess record for domain of sideshow.bob@pm.sprint.com)
|
19
|
+
client-ip=63.215.195.131;
|
20
|
+
Authentication-Results: mx.google.com; spf=neutral (google.com: 63.215.195.131
|
21
|
+
is neither permitted nor denied by best guess record for domain of
|
22
|
+
sideshow.bob@pm.sprint.com) smtp.mail=sideshow.bob@pm.sprint.com
|
23
|
+
X-Priority: 3
|
24
|
+
X-MSMail-Priority: Normal
|
25
|
+
Importance: Normal
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
------=_Part_313708_25410566.1334609448230
|
30
|
+
Date: Mon, 16 Apr 2012 20:57:48 +0000
|
31
|
+
Mime-Version: 1.0
|
32
|
+
Content-Type: text/plain;
|
33
|
+
charset=us-ascii
|
34
|
+
Content-Transfer-Encoding: 7bit
|
35
|
+
Content-ID: <4f8c87cc3a7_3bcbcf3a47358c@711c1195-3077-406a-aba4-b6725acc21c4.mail>
|
36
|
+
|
37
|
+
New Picture Mail from {SENDER_ADDRESS}!
|
38
|
+
|
39
|
+
Click Go/View to see.
|
40
|
+
http://pictures.sprintpcs.com/?mivt=dWQEWQERDWEefwWEf&shareName=MMS
|
41
|
+
|
42
|
+
_frsthgl
|
43
|
+
|
44
|
+
------=_Part_313708_25410566.1334609448230
|
45
|
+
Date: Mon, 16 Apr 2012 20:57:48 +0000
|
46
|
+
Mime-Version: 1.0
|
47
|
+
Content-Type: text/html;
|
48
|
+
charset=UTF-8
|
49
|
+
Content-Transfer-Encoding: 7bit
|
50
|
+
Content-ID: <4f8c87cc1220_3bcbcf3a4736fd@711c1195-3077-406a-aba4-b6725acc21c4.mail>
|
51
|
+
|
52
|
+
<html>
|
53
|
+
<head><title>You have new Picture Mail!</title>
|
54
|
+
<!-- lsPictureMail-Share-dWQEWQERDWEefwWEf-comment
|
55
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
56
|
+
<shareMessage>
|
57
|
+
<messageContents type="PICTURE">
|
58
|
+
<messageText></messageText>
|
59
|
+
<mediaItems>
|
60
|
+
<mediaItem id="1">
|
61
|
+
<title></title>
|
62
|
+
&lt;url&gt;http://pictures.sprintpcs.com/getMMBOXMessageMedia?id=Xw1004H8sLv6S3x76lVPYolcexVfCdoEvXqTgC1LOkLONz34IC9SMwmk5gW%2FZUWGqyw0fwJJvr5z%0ARdCKg1wQYriT07mKN82PqmTlYRVwDMWGkNKbb8WqPD%2F4a1A61I2rQ26BSr%2Fb84dpnib%2FsZpVJg%3D%3D%0A&lt;/url&gt;
|
63
|
+
|
64
|
+
<urlExpiration>2012-04-23T20:50:48Z</urlExpiration>
|
65
|
+
</mediaItem>
|
66
|
+
</mediaItems>
|
67
|
+
</messageContents>
|
68
|
+
</shareMessage>
|
69
|
+
|
70
|
+
-->
|
71
|
+
<!-- lsPictureMail-UserInfo-dWQEWQERDWEefwWEf-comment
|
72
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
73
|
+
<UserInfo timestamp="2012-04-16T20:50:48.228+00:00" originating_from_address="sideshow.bob@pm.sprint.com"><credential name="MDN">5135455555</credential></UserInfo>
|
74
|
+
-->
|
75
|
+
</head>
|
76
|
+
<body marginheight="0" marginwidth="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
|
77
|
+
<table border="0" width="100%" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" >
|
78
|
+
<tr>
|
79
|
+
<td VALIGN="top" colspan="2" width="100%">
|
80
|
+
<div style="border-bottom:1px solid rgb(156, 154, 156); padding:20px 0px 20px 10px"><a href="http://www.sprintpcs.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/ui-refresh/images/logo/sprint-logo-white.jpg" alt="" border="0" /></a></div>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
<tr>
|
84
|
+
<td VALIGN="top" colspan="2">
|
85
|
+
<table border="0" cellpadding="0" cellspacing="0" width="590" bgcolor="#FFFFFF">
|
86
|
+
<tr>
|
87
|
+
<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 sideshow.bob@pm.sprint.com</b></font><br/><br/></p></td>
|
88
|
+
</tr>
|
89
|
+
</table>
|
90
|
+
</td>
|
91
|
+
</tr>
|
92
|
+
<tr>
|
93
|
+
<td colspan="2">
|
94
|
+
<table border="0" width="590" cellpadding="0" cellspacing="0">
|
95
|
+
<tr>
|
96
|
+
<td width="10"> </td>
|
97
|
+
<td width="280" valign="top">
|
98
|
+
<table border="0" cellpadding="0" style="border:1px solid #9C9A9C;">
|
99
|
+
<tr>
|
100
|
+
<td>
|
101
|
+
<table border="0" bgcolor="#ffffff" cellpadding="0" cellspacing="7" style="table-layout:fixed">
|
102
|
+
<tr>
|
103
|
+
<td align="center">
|
104
|
+
<img src="http://pictures.sprintpcs.com//mmps/RECIPIENT/031_36415d1a9c3c73f0_1/2?inviteToken=dWQEWQERDWEefwWEf&limitsize=258,258&outquality=90&squareoutput=255,255,255&ext=.jpg&iconifyVideo=true&wm=1"/>
|
105
|
+
</td>
|
106
|
+
</tr>
|
107
|
+
</table>
|
108
|
+
</td>
|
109
|
+
</tr>
|
110
|
+
</table>
|
111
|
+
</td>
|
112
|
+
<td width="20"> </td>
|
113
|
+
<td VALIGN="top" align="right" width="280">
|
114
|
+
<table border="0" cellpadding="0" cellspacing="0" width="280" style="table-layout:fixed">
|
115
|
+
<tr>
|
116
|
+
<td><p><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>Message:</b></font></p></td>
|
117
|
+
</tr>
|
118
|
+
<tr>
|
119
|
+
<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>
|
120
|
+
</tr>
|
121
|
+
<tr>
|
122
|
+
<td><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="15"/></td>
|
123
|
+
</tr>
|
124
|
+
<tr>
|
125
|
+
<td width="280">
|
126
|
+
<div style="padding:0px; background-color:#fff; font: normal 10pt trebuchet ms" width="280">
|
127
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=dWQEWQERDWEefwWEf&shareName=MMS&messageState=RETRIEVED">View Entire Message</a>
|
128
|
+
<br/><br/>
|
129
|
+
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>
|
130
|
+
</div>
|
131
|
+
</td>
|
132
|
+
</tr>
|
133
|
+
</table>
|
134
|
+
</td>
|
135
|
+
</tr>
|
136
|
+
</table>
|
137
|
+
</td>
|
138
|
+
</tr>
|
139
|
+
<tr>
|
140
|
+
<td>
|
141
|
+
<table>
|
142
|
+
<tr>
|
143
|
+
<td>
|
144
|
+
<div style="font: normal 10pt trebuchet ms;margin-top:10px;">Please be aware your friends can forward your picture, video, and album share invitations to others or post the unique Web link to your share invitation on any number of sources (e.g. blogs), through which others could also gain access to your online photos. If you have private or sensitive photos you are sharing, please share them only with those you trust.</div>
|
145
|
+
</td>
|
146
|
+
</tr>
|
147
|
+
</table>
|
148
|
+
</td>
|
149
|
+
</tr>
|
150
|
+
<tr>
|
151
|
+
<td colspan="2">
|
152
|
+
<img src="http://pictures.sprintpcs.com/images/x.gif" width="5" height="45"/>
|
153
|
+
</td>
|
154
|
+
</tr>
|
155
|
+
<tr>
|
156
|
+
<td VALIGN="top" colspan="2" width="590">
|
157
|
+
<img src="http://pictures.sprintpcs.com/images/x.gif" height="5"/>
|
158
|
+
</td>
|
159
|
+
</tr>
|
160
|
+
<tr>
|
161
|
+
<td VALIGN="top" colspan="2" width="100%">
|
162
|
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
163
|
+
<tr>
|
164
|
+
<td bgcolor="#ffffff" width="100%">
|
165
|
+
<div style="border-top:1px solid rgb(156, 154, 156)"> </div>
|
166
|
+
</td>
|
167
|
+
</tr>
|
168
|
+
<tr>
|
169
|
+
<td>
|
170
|
+
<div style="float:right; padding-right:5px"><span style="font-family:trebuchet ms, Helvetica, Arial, Verdana; Font-size: 11px; Color: #000000">© 2012 Sprint. All rights reserved.</span></div>
|
171
|
+
</td>
|
172
|
+
</tr>
|
173
|
+
<tr>
|
174
|
+
<td bgcolor="#ffffff" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="10"/></td>
|
175
|
+
</tr>
|
176
|
+
</table>
|
177
|
+
</td>
|
178
|
+
</tr>
|
179
|
+
</table>
|
180
|
+
</body>
|
181
|
+
</html><!-- legacy_mms_arrived.txt -->
|
182
|
+
|
183
|
+
------=_Part_313708_25410566.1334609448230--
|
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
|
1
|
+
if ENV['COVERAGE']
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start do
|
4
|
+
add_filter 'test'
|
5
|
+
end
|
6
|
+
end
|
2
7
|
|
3
|
-
|
8
|
+
# do it like rake http://ozmm.org/posts/do_it_like_rake.html
|
9
|
+
%W{ test/unit set net/http net/https pp tempfile mocha }.each do |g|
|
4
10
|
begin
|
5
11
|
require g
|
6
12
|
rescue LoadError
|
data/test/test_mms2r_media.rb
CHANGED
@@ -213,7 +213,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
213
213
|
assert_equal [type, text], mms.transform_text(type, "Ignore this part, " + text)
|
214
214
|
|
215
215
|
# chaining transforms
|
216
|
-
mms.expects(:config).at_least_once.returns({'transform' => {type => [[/(hello)/, 'world'],
|
216
|
+
mms.expects(:config).at_least_once.returns({'transform' => {type => [[/(hello)/, 'world'],
|
217
217
|
[/(world)/, 'mars']]}})
|
218
218
|
assert_equal [type, 'mars'], mms.transform_text(type, text)
|
219
219
|
|
@@ -710,7 +710,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
710
710
|
mms.process do |type, files|
|
711
711
|
assert_equal 1, files.size
|
712
712
|
assert_equal true, type == 'text/plain' || type == 'text/html'
|
713
|
-
assert_equal true, File.basename(files.first) == 'message.txt' ||
|
713
|
+
assert_equal true, File.basename(files.first) == 'message.txt' ||
|
714
714
|
File.basename(files.first) == 'message.html'
|
715
715
|
assert_equal true, File::exist?(files.first)
|
716
716
|
end
|
data/test/test_pm_sprint_com.rb
CHANGED
@@ -39,6 +39,54 @@ class TestPmSprintCom < Test::Unit::TestCase
|
|
39
39
|
).once.returns(response)
|
40
40
|
end
|
41
41
|
|
42
|
+
def mock_sprint_ajax
|
43
|
+
response = mock('response')
|
44
|
+
body = mock('body')
|
45
|
+
# this is a response from a real sprint message
|
46
|
+
file = File.open("./test/fixtures/sprint-ajax-response-success.json", "rb")
|
47
|
+
json = file.read
|
48
|
+
body.expects(:to_str).returns json
|
49
|
+
connection = mock('connection')
|
50
|
+
connection.stubs(:use_ssl=).returns(true)
|
51
|
+
response.expects(:body).twice.returns(body)
|
52
|
+
response.expects(:code).once.returns('200')
|
53
|
+
response.expects(:content_type).twice.returns('text/html')
|
54
|
+
|
55
|
+
Net::HTTP.expects(:new).with('pictures.sprintpcs.com', 80).twice.returns connection
|
56
|
+
connection.expects(:get2).with(
|
57
|
+
# 1.9.2
|
58
|
+
# '//mmps/RECIPIENT/001_2066c7013e7ca833_1/2?inviteToken=PE5rJ5PdYzzwk7V7zoXU&outquality=90&ext=.jpg&iconifyVideo=true&wm=1'
|
59
|
+
# 1.8.7
|
60
|
+
# '//mmps/RECIPIENT/001_2066c7013e7ca833_1/2?wm=1&ext=.jpg&outquality=90&iconifyVideo=true&inviteToken=PE5rJ5PdYzzwk7V7zoXU'
|
61
|
+
kind_of(String),
|
62
|
+
{ "User-Agent" => MMS2R::Media::USER_AGENT }
|
63
|
+
).twice.returns(response)
|
64
|
+
end
|
65
|
+
|
66
|
+
def mock_sprint_ajax_purged
|
67
|
+
response = mock('response')
|
68
|
+
body = mock('body')
|
69
|
+
# this is a response from a real sprint message
|
70
|
+
file = File.open("./test/fixtures/sprint-ajax-response-failure.html", "rb")
|
71
|
+
error_html = file.read
|
72
|
+
body.expects(:to_str).returns error_html
|
73
|
+
connection = mock('connection')
|
74
|
+
connection.stubs(:use_ssl=).returns(true)
|
75
|
+
response.expects(:body).twice.returns(body)
|
76
|
+
response.expects(:code).once.returns('500')
|
77
|
+
response.expects(:content_type).once.returns('text/html')
|
78
|
+
|
79
|
+
Net::HTTP.expects(:new).with('pictures.sprintpcs.com', 80).twice.returns connection
|
80
|
+
connection.expects(:get2).with(
|
81
|
+
# 1.9.2
|
82
|
+
# '//mmps/RECIPIENT/001_2066c7013e7ca833_1/2?inviteToken=PE5rJ5PdYzzwk7V7zoXU&outquality=90&ext=.jpg&iconifyVideo=true&wm=1'
|
83
|
+
# 1.8.7
|
84
|
+
# '//mmps/RECIPIENT/001_2066c7013e7ca833_1/2?wm=1&ext=.jpg&outquality=90&iconifyVideo=true&inviteToken=PE5rJ5PdYzzwk7V7zoXU'
|
85
|
+
kind_of(String),
|
86
|
+
{ "User-Agent" => MMS2R::Media::USER_AGENT }
|
87
|
+
).twice.returns(response)
|
88
|
+
end
|
89
|
+
|
42
90
|
def test_mms_should_have_text
|
43
91
|
mail = mail('sprint-text-01.mail')
|
44
92
|
mms = MMS2R::Media.new(mail)
|
@@ -185,6 +233,35 @@ class TestPmSprintCom < Test::Unit::TestCase
|
|
185
233
|
mms.purge
|
186
234
|
end
|
187
235
|
|
236
|
+
def test_message_is_missing_in_mail
|
237
|
+
# this test is questionable
|
238
|
+
mail = mail('sprint-image-missing-message.mail')
|
239
|
+
mock_sprint_ajax
|
240
|
+
mms = MMS2R::Media.new(mail)
|
241
|
+
|
242
|
+
assert_equal 1, mms.media['text/plain'].size
|
243
|
+
|
244
|
+
# test that the message was extracted from the ajax response
|
245
|
+
message = IO.readlines(mms.media['text/plain'].first).join("")
|
246
|
+
assert_equal "Just testing the caption on Sprint", message
|
247
|
+
|
248
|
+
mms.purge
|
249
|
+
end
|
250
|
+
|
251
|
+
def test_message_is_missing_in_mail_purged_from_content_server
|
252
|
+
# this test is questionable
|
253
|
+
mail = mail('sprint-image-missing-message.mail')
|
254
|
+
mock_sprint_ajax_purged
|
255
|
+
mms = MMS2R::Media.new(mail)
|
256
|
+
|
257
|
+
assert_equal '5135455555', mms.number
|
258
|
+
assert_equal "pm.sprint.com", mms.carrier
|
259
|
+
|
260
|
+
assert_equal 0, mms.media.size
|
261
|
+
|
262
|
+
mms.purge
|
263
|
+
end
|
264
|
+
|
188
265
|
def test_image_should_be_purged_from_content_server
|
189
266
|
mail = mail('sprint-image-01.mail')
|
190
267
|
mock_sprint_purged_image(mail.message_id)
|
@@ -230,6 +307,7 @@ class TestPmSprintCom < Test::Unit::TestCase
|
|
230
307
|
|
231
308
|
def test_new_subject
|
232
309
|
mail = mail('sprint-new-image-01.mail')
|
310
|
+
mock_sprint_ajax
|
233
311
|
mms = MMS2R::Media.new(mail)
|
234
312
|
assert_equal '2068675309', mms.number
|
235
313
|
assert_equal "pm.sprint.com", mms.carrier
|
metadata
CHANGED
@@ -1,112 +1,200 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mms2r
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.7.0
|
4
5
|
prerelease:
|
5
|
-
version: 3.6.4
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Mike Mondragon
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
date: 2012-05-31 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.9.2.2
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.9.2.2
|
30
|
+
- !ruby/object:Gem::Dependency
|
16
31
|
name: nokogiri
|
17
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
18
33
|
none: false
|
19
|
-
requirements:
|
20
|
-
- -
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.5.0
|
23
38
|
type: :runtime
|
24
39
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.5.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
27
47
|
name: mail
|
28
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
29
49
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.4.0
|
34
54
|
type: :runtime
|
35
55
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
-
|
38
|
-
|
39
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.4.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: exifr
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
40
65
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version:
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.0.3
|
45
70
|
type: :runtime
|
46
71
|
prerelease: false
|
47
|
-
version_requirements:
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: exifr
|
50
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
73
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
55
77
|
version: 1.0.3
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: json
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.6.0
|
56
86
|
type: :runtime
|
57
87
|
prerelease: false
|
58
|
-
version_requirements:
|
59
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.6.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
60
95
|
name: rdoc
|
61
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: simplecov
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: test-unit
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
62
129
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version:
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
67
134
|
type: :development
|
68
135
|
prerelease: false
|
69
|
-
version_requirements:
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: hoe
|
72
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
137
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version:
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: mocha
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
78
150
|
type: :development
|
79
151
|
prerelease: false
|
80
|
-
version_requirements:
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
description: ! 'MMS2R by Mike Mondragon
|
159
|
+
|
86
160
|
https://github.com/monde/mms2r
|
87
|
-
|
161
|
+
|
162
|
+
https://rubygems.org/gems/mms2r
|
163
|
+
|
88
164
|
http://peepcode.com/products/mms2r-pdf
|
89
|
-
|
165
|
+
|
166
|
+
|
90
167
|
MMS2R is a library that decodes the parts of an MMS message to disk while
|
168
|
+
|
91
169
|
stripping out advertising injected by the mobile carriers. MMS messages are
|
170
|
+
|
92
171
|
multipart email and the carriers often inject branding into these messages. Use
|
172
|
+
|
93
173
|
MMS2R if you want to get at the real user generated content from a MMS without
|
174
|
+
|
94
175
|
having to deal with the cruft from the carriers.
|
95
|
-
|
176
|
+
|
177
|
+
|
96
178
|
If MMS2R is not aware of a particular carrier no extra processing is done to the
|
179
|
+
|
97
180
|
MMS other than decoding and consolidating its media.
|
98
|
-
|
181
|
+
|
182
|
+
|
183
|
+
MMS2R can be used to process any multipart email to conveniently access the
|
184
|
+
|
185
|
+
parts the mail is comprised of.
|
186
|
+
|
187
|
+
'
|
188
|
+
email:
|
99
189
|
- mikemondragon@gmail.com
|
100
190
|
executables: []
|
101
|
-
|
102
191
|
extensions: []
|
103
|
-
|
104
|
-
extra_rdoc_files:
|
192
|
+
extra_rdoc_files:
|
105
193
|
- History.txt
|
106
194
|
- Manifest.txt
|
107
195
|
- README.TMail.txt
|
108
196
|
- README.txt
|
109
|
-
files:
|
197
|
+
files:
|
110
198
|
- .gitignore
|
111
199
|
- Gemfile
|
112
200
|
- Gemfile.lock
|
@@ -158,6 +246,7 @@ files:
|
|
158
246
|
- lib/mms2r.rb
|
159
247
|
- lib/mms2r/media.rb
|
160
248
|
- lib/mms2r/media/sprint.rb
|
249
|
+
- lib/mms2r/version.rb
|
161
250
|
- mms2r.gemspec
|
162
251
|
- test/fixtures/1nbox-2images-01.mail
|
163
252
|
- test/fixtures/1nbox-2images-02.mail
|
@@ -219,9 +308,12 @@ files:
|
|
219
308
|
- test/fixtures/pxt-image-01.mail
|
220
309
|
- test/fixtures/rogers-canada-mms-01.mail
|
221
310
|
- test/fixtures/sasktel-image-01.mail
|
311
|
+
- test/fixtures/sprint-ajax-response-failure.html
|
312
|
+
- test/fixtures/sprint-ajax-response-success.json
|
222
313
|
- test/fixtures/sprint-blackberry-01.mail
|
223
314
|
- test/fixtures/sprint-broken-image-01.mail
|
224
315
|
- test/fixtures/sprint-image-01.mail
|
316
|
+
- test/fixtures/sprint-image-missing-message.mail
|
225
317
|
- test/fixtures/sprint-new-image-01.mail
|
226
318
|
- test/fixtures/sprint-pcs-text-01.mail
|
227
319
|
- test/fixtures/sprint-purged-image-01.mail
|
@@ -293,73 +385,36 @@ files:
|
|
293
385
|
- test/test_waw_plspictures_com.rb
|
294
386
|
- vendor/plugins/mms2r/lib/autotest/discover.rb
|
295
387
|
- vendor/plugins/mms2r/lib/autotest/mms2r.rb
|
296
|
-
- .gemtest
|
297
388
|
homepage: https://github.com/monde/mms2r
|
298
389
|
licenses: []
|
299
|
-
|
300
390
|
post_install_message:
|
301
|
-
rdoc_options:
|
391
|
+
rdoc_options:
|
302
392
|
- --main
|
303
393
|
- README.txt
|
304
|
-
require_paths:
|
305
|
-
- lib
|
306
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
394
|
+
require_paths:
|
395
|
+
- - lib
|
396
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
307
397
|
none: false
|
308
|
-
requirements:
|
309
|
-
- -
|
310
|
-
- !ruby/object:Gem::Version
|
311
|
-
|
312
|
-
segments:
|
398
|
+
requirements:
|
399
|
+
- - ! '>='
|
400
|
+
- !ruby/object:Gem::Version
|
401
|
+
version: '0'
|
402
|
+
segments:
|
313
403
|
- 0
|
314
|
-
|
315
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
404
|
+
hash: -822088507277629508
|
405
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
316
406
|
none: false
|
317
|
-
requirements:
|
318
|
-
- -
|
319
|
-
- !ruby/object:Gem::Version
|
320
|
-
version:
|
407
|
+
requirements:
|
408
|
+
- - ! '>='
|
409
|
+
- !ruby/object:Gem::Version
|
410
|
+
version: '0'
|
411
|
+
segments:
|
412
|
+
- 0
|
413
|
+
hash: -822088507277629508
|
321
414
|
requirements: []
|
322
|
-
|
323
415
|
rubyforge_project: mms2r
|
324
|
-
rubygems_version: 1.8.
|
416
|
+
rubygems_version: 1.8.24
|
325
417
|
signing_key:
|
326
418
|
specification_version: 3
|
327
419
|
summary: Extract user media from MMS (and not carrier cruft)
|
328
|
-
test_files:
|
329
|
-
- test/test_orangemms_net.rb
|
330
|
-
- test/test_waw_plspictures_com.rb
|
331
|
-
- test/test_mediamessaging_o2_co_uk.rb
|
332
|
-
- test/test_vzwpix_com.rb
|
333
|
-
- test/test_unicel_com.rb
|
334
|
-
- test/test_messaging_sprintpcs_com.rb
|
335
|
-
- test/test_mms_luxgsm_lu.rb
|
336
|
-
- test/test_rci_rogers_com.rb
|
337
|
-
- test/test_mms_uscc_net.rb
|
338
|
-
- test/test_mms_netcom_no.rb
|
339
|
-
- test/test_1nbox_net.rb
|
340
|
-
- test/test_sms_sasktel_com.rb
|
341
|
-
- test/test_mms_att_net.rb
|
342
|
-
- test/test_mobile_indosat_net_id.rb
|
343
|
-
- test/test_messaging_nextel_com.rb
|
344
|
-
- test/test_invalid_byte_seq_outlook.rb
|
345
|
-
- test/test_mms_mtn_co_za.rb
|
346
|
-
- test/test_mms_vodacom4me_co_za.rb
|
347
|
-
- test/test_pxt_vodafone_net_nz.rb
|
348
|
-
- test/test_mms_dobson_net.rb
|
349
|
-
- test/test_helper.rb
|
350
|
-
- test/test_msg_telus_com.rb
|
351
|
-
- test/test_mms_o2online_de.rb
|
352
|
-
- test/test_mms2r_media.rb
|
353
|
-
- test/test_bell_canada.rb
|
354
|
-
- test/test_tmomail_net.rb
|
355
|
-
- test/test_mms_3ireland_ie.rb
|
356
|
-
- test/test_pm_sprint_com.rb
|
357
|
-
- test/test_mms_alltel_com.rb
|
358
|
-
- test/test_mms_mobileiam_ma.rb
|
359
|
-
- test/test_mms_mycricket_com.rb
|
360
|
-
- test/test_bellsouth_net.rb
|
361
|
-
- test/test_mms_three_co_uk.rb
|
362
|
-
- test/test_vmpix_com.rb
|
363
|
-
- test/test_mms_myhelio_com.rb
|
364
|
-
- test/test_sprint.rb
|
365
|
-
- test/test_mms_ae.rb
|
420
|
+
test_files: []
|