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 CHANGED
@@ -1,20 +1,3 @@
1
- # -*- ruby -*-
1
+ source 'https://rubygems.org'
2
2
 
3
- source :rubygems
4
-
5
- gem "nokogiri"
6
- gem "mail"
7
- gem "exifr"
8
- # gem "psych"
9
-
10
- group :development, :test do
11
- gem "rdoc"
12
- gem "rubyforge"
13
- gem "gemcutter"
14
- gem "hoe"
15
- gem "rcov"
16
- gem "test-unit", "=1.2.3"
17
- gem "mocha"
18
- end
19
-
20
- # vim: syntax=ruby
3
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,31 +1,38 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mms2r (3.7.0)
5
+ exifr (>= 1.0.3)
6
+ json (>= 1.6.0)
7
+ mail (>= 2.4.0)
8
+ nokogiri (>= 1.5.0)
9
+ rake (= 0.9.2.2)
10
+
1
11
  GEM
2
- remote: http://rubygems.org/
12
+ remote: https://rubygems.org/
3
13
  specs:
4
- exifr (1.1.1)
5
- gemcutter (0.7.1)
6
- hoe (2.12.5)
7
- rake (~> 0.8)
14
+ exifr (1.1.2)
8
15
  i18n (0.6.0)
9
- json (1.6.5)
10
- json_pure (1.6.5)
11
- mail (2.4.0)
16
+ json (1.7.3)
17
+ mail (2.4.4)
12
18
  i18n (>= 0.4.0)
13
19
  mime-types (~> 1.16)
14
20
  treetop (~> 1.4.8)
15
21
  metaclass (0.0.1)
16
- mime-types (1.17.2)
17
- mocha (0.10.2)
22
+ mime-types (1.18)
23
+ mocha (0.11.4)
18
24
  metaclass (~> 0.0.1)
19
- nokogiri (1.5.0)
25
+ multi_json (1.3.5)
26
+ nokogiri (1.5.2)
20
27
  polyglot (0.3.3)
21
28
  rake (0.9.2.2)
22
- rcov (0.9.11)
23
29
  rdoc (3.12)
24
30
  json (~> 1.4)
25
- rubyforge (2.0.4)
26
- json_pure (>= 1.1.7)
27
- test-unit (1.2.3)
28
- hoe (>= 1.5.1)
31
+ simplecov (0.6.4)
32
+ multi_json (~> 1.0)
33
+ simplecov-html (~> 0.5.3)
34
+ simplecov-html (0.5.3)
35
+ test-unit (2.4.8)
29
36
  treetop (1.4.10)
30
37
  polyglot
31
38
  polyglot (>= 0.3.1)
@@ -34,13 +41,8 @@ PLATFORMS
34
41
  ruby
35
42
 
36
43
  DEPENDENCIES
37
- exifr
38
- gemcutter
39
- hoe
40
- mail
44
+ mms2r!
41
45
  mocha
42
- nokogiri
43
- rcov
44
46
  rdoc
45
- rubyforge
46
- test-unit (= 1.2.3)
47
+ simplecov
48
+ test-unit
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ ### 3.7.0 / 2012-05-31 (The Teenager - Edgar's brother via Eric's face)
2
+
3
+ * 2 major enhancements
4
+ * Improve processing of Sprint media - James McGrath
5
+ * Remove Hoe and gemcutter dependencies
6
+
1
7
  ### 3.6.4 / 2012-04-22 (Molly - Pickles' mother)
2
8
 
3
9
  * 1 minor enhancement
data/Manifest.txt CHANGED
@@ -48,6 +48,7 @@ lib/ext/mail.rb
48
48
  lib/ext/object.rb
49
49
  lib/mms2r.rb
50
50
  lib/mms2r/media.rb
51
+ lib/mms2r/version.rb
51
52
  lib/mms2r/media/sprint.rb
52
53
  mms2r.gemspec
53
54
  test/fixtures/1nbox-2images-01.mail
data/README.txt CHANGED
@@ -5,9 +5,8 @@
5
5
  == DESCRIPTION
6
6
 
7
7
  MMS2R by Mike Mondragon
8
- http://mms2r.rubyforge.org/
9
8
  https://github.com/monde/mms2r
10
- https://github.com/monde/mms2r/issues
9
+ https://rubygems.org/gems/mms2r
11
10
  http://peepcode.com/products/mms2r-pdf
12
11
 
13
12
  MMS2R is a library that decodes the parts of an MMS message to disk while
data/Rakefile CHANGED
@@ -1,45 +1,11 @@
1
- # -*- ruby -*-
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
2
3
 
3
- begin
4
- require 'hoe'
5
- rescue LoadError
6
- require 'rubygems'
7
- require 'hoe'
8
- end
9
-
10
-
11
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "lib")
12
- require 'mms2r'
13
- require 'rake'
14
-
15
- Hoe.plugin :bundler
16
- Hoe.spec('mms2r') do |p|
17
- p.version = MMS2R::Media::VERSION
18
- p.rubyforge_name = 'mms2r'
19
- p.author = ['Mike Mondragon']
20
- p.email = ['mikemondragon@gmail.com']
21
- p.summary = 'Extract user media from MMS (and not carrier cruft)'
22
- p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
23
- p.url = p.paragraphs_of('README.txt', 1).first.strip
24
- p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
25
- p.readme_file = 'README.txt'
26
- p.history_file = 'History.txt'
27
- p.extra_deps << ['nokogiri', '>= 1.4.4']
28
- p.extra_deps << ['mail', '>= 2.2.10']
29
- p.extra_deps << ['uuidtools', '>= 2.1.1']
30
- p.extra_deps << ['exifr', '>= 1.0.3']
31
- p.clean_globs << 'coverage'
32
- end
4
+ require 'rake/testtask'
33
5
 
34
- begin
35
- require 'rcov/rcovtask'
36
- Rcov::RcovTask.new do |rcov|
37
- rcov.pattern = 'test/**/test_*.rb'
38
- rcov.verbose = true
39
- rcov.rcov_opts << "--exclude rcov.rb"
40
- end
41
- rescue
42
- task :rcov => :check_dependencies
6
+ Rake::TestTask.new do |t|
7
+ t.libs << 'test'
43
8
  end
44
9
 
45
- # vim: syntax=Ruby
10
+ desc "Run tests"
11
+ task :default => :test
@@ -26,7 +26,7 @@ puts "NUMBER: #{number}"
26
26
  text = doc.search("/html/body//pre").first.inner_html
27
27
  puts "TEXT: #{text}"
28
28
 
29
- # just see what they say this MMS is it really doesn't mean anything, the
29
+ # just see what they say this MMS is it really doesn't mean anything, the
30
30
  # content is in faux image with a RECIPIENT in its URI path
31
31
  text = doc.search("/html/body//tr[2]/td//b")
32
32
  case text.text
data/lib/ext/object.rb CHANGED
@@ -1,11 +1,19 @@
1
1
  class Object
2
2
 
3
- def blank?
4
- respond_to?(:empty?) ? empty? : !self
3
+ unless respond_to?(:blank?)
4
+
5
+ def blank?
6
+ respond_to?(:empty?) ? empty? : !self
7
+ end
8
+
5
9
  end
6
10
 
7
- def present?
8
- !blank?
11
+ unless respond_to?(:present?)
12
+
13
+ def present?
14
+ !blank?
15
+ end
16
+
9
17
  end
10
18
 
11
19
  end
data/lib/mms2r.rb CHANGED
@@ -36,11 +36,6 @@ module MMS2R
36
36
 
37
37
  class MMS2R::Media
38
38
 
39
- ##
40
- # MMS2R library version
41
-
42
- VERSION = '3.6.4'
43
-
44
39
  ##
45
40
  # Spoof User-Agent, primarily for the Sprint CDN
46
41
 
data/lib/mms2r/media.rb CHANGED
@@ -803,6 +803,7 @@ module MMS2R
803
803
 
804
804
  #get the largest file
805
805
  files.each do |path|
806
+ next unless File.exist?(path)
806
807
  if File.size(path) > size
807
808
  size = File.size(path)
808
809
  file = File.new(path)
@@ -7,6 +7,7 @@
7
7
  require 'net/http'
8
8
  require 'nokogiri'
9
9
  require 'cgi'
10
+ require 'json'
10
11
 
11
12
  module MMS2R
12
13
 
@@ -92,14 +93,64 @@ module MMS2R
92
93
  # the user. (note) we'll have to verify that if they attach multiple texts
93
94
  # to the MMS then Sprint stacks it up in multiple <pre>'s. The only <pre>
94
95
  # tag in the document is for text from the user.
96
+ # if there is no text media found in the mail body - then we go to more
97
+ # extreme measures.
98
+ text_found = false
99
+
95
100
  doc.search("/html/body//pre").each do |pre|
96
101
  type = 'text/plain'
97
102
  text = pre.inner_html.strip
98
103
  next if text.empty?
104
+
105
+ text_found = true
99
106
  type, text = transform_text(type, text)
100
107
  type, file = sprint_write_file(type, text.strip)
101
108
  add_file(type, file) unless type.nil? || file.nil?
102
109
  end
110
+ # if no text was found, there still might be a message with images
111
+ # that can be seen at the end of the "View Entire Message" link
112
+ if !text_found
113
+ view_entire_message_link = doc.search("a").find { |link| link.inner_html == "View Entire Message"}
114
+ # if we can't find the view entire message link, give up
115
+ if view_entire_message_link
116
+ # Sprint uses AJAX/json to serve up the content at the end of the link so this is conveluted
117
+ url = view_entire_message_link.attr("href")
118
+ # extract the "invite" param out of the url - this will be the id we pass to the ajax path below
119
+ inviteMessageId = CGI::parse(URI::parse(url).query)["invite"].first
120
+
121
+ if inviteMessageId
122
+ json_url = "http://pictures.sprintpcs.com/ui-refresh/guest/getMessageContainerJSON.do%3FcomponentType%3DmediaDetail&invite=#{inviteMessageId}&externalMessageId=#{inviteMessageId}"
123
+ # pull down the json from the url and parse it
124
+ uri = URI.parse(json_url)
125
+ connection = Net::HTTP.new(uri.host, uri.port)
126
+ response = connection.get2(
127
+ uri.request_uri,
128
+ { "User-Agent" => MMS2R::Media::USER_AGENT }
129
+ )
130
+ content = response.body
131
+
132
+ # if the content has expired, sprint sends back html "content expired page
133
+ # json will fail to parse
134
+ begin
135
+ json = JSON.parse(content)
136
+
137
+ # there may be multiple "results" in the json - due to multiple images
138
+ # cycle through them and extract the "description" which is the text
139
+ # message the sender sent with the images
140
+ json["Results"].each do |result|
141
+ type = 'text/plain'
142
+ text = result["description"] ? result["description"].strip : nil
143
+ next if text.empty?
144
+ type, text = transform_text(type, text)
145
+ type, file = sprint_write_file(type, text.strip)
146
+ add_file(type, file) unless type.nil? || file.nil?
147
+ end
148
+ rescue JSON::ParserError => e
149
+ log("#{self.class} processing error, #{$!}", :error)
150
+ end
151
+ end
152
+ end
153
+ end
103
154
  end
104
155
 
105
156
  ##
@@ -151,7 +202,6 @@ module MMS2R
151
202
  log("#{self.class} processing error, #{$!}", :error)
152
203
  next
153
204
  end
154
-
155
205
  # if the Sprint content server uses response code 500 when the content is purged
156
206
  # the content type will text/html and the body will be the message
157
207
  if response.content_type == 'text/html' && response.code == "500"
@@ -0,0 +1,25 @@
1
+ module MMS2R
2
+ class Version
3
+
4
+ def self.major
5
+ 3
6
+ end
7
+
8
+ def self.minor
9
+ 7
10
+ end
11
+
12
+ def self.patch
13
+ 0
14
+ end
15
+
16
+ def self.pre
17
+ nil
18
+ end
19
+
20
+ def self.to_s
21
+ [major, minor, patch, pre].compact.join('.')
22
+ end
23
+
24
+ end
25
+ end
data/mms2r.gemspec CHANGED
@@ -1,45 +1,33 @@
1
- # -*- encoding: utf-8 -*-
1
+ $:.unshift File.expand_path("../lib", __FILE__)
2
+ require "mms2r/version"
2
3
 
3
- Gem::Specification.new do |s|
4
- s.name = "mms2r"
5
- s.version = "3.6.2"
4
+ Gem::Specification.new do |gem|
6
5
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Mike Mondragon"]
9
- s.date = "2011-10-31"
10
- s.description = "== DESCRIPTION\n\nMMS2R by Mike Mondragon\nhttp://mms2r.rubyforge.org/\nhttps://github.com/monde/mms2r\nhttps://github.com/monde/mms2r/issues\nhttp://peepcode.com/products/mms2r-pdf\n\nMMS2R is a library that decodes the parts of an MMS message to disk while\nstripping out advertising injected by the mobile carriers. MMS messages are\nmultipart email and the carriers often inject branding into these messages. Use\nMMS2R if you want to get at the real user generated content from a MMS without\nhaving to deal with the cruft from the carriers.\n\nIf MMS2R is not aware of a particular carrier no extra processing is done to the\nMMS other than decoding and consolidating its media."
11
- s.email = ["mikemondragon@gmail.com"]
12
- s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.TMail.txt", "README.txt"]
13
- s.files = ["Gemfile", "Gemfile.lock", "History.txt", "Manifest.txt", "README.TMail.txt", "README.txt", "Rakefile", "conf/1nbox.net.yml", "conf/aliases.yml", "conf/bellsouth.net.yml", "conf/from.yml", "conf/mediamessaging.o2.co.uk.yml", "conf/messaging.nextel.com.yml", "conf/mms.3ireland.ie.yml", "conf/mms.ae.yml", "conf/mms.alltel.com.yml", "conf/mms.att.net.yml", "conf/mms.dobson.net.yml", "conf/mms.luxgsm.lu.yml", "conf/mms.mobileiam.ma.yml", "conf/mms.mtn.co.za.yml", "conf/mms.mycricket.com.yml", "conf/mms.myhelio.com.yml", "conf/mms.netcom.no.yml", "conf/mms.o2online.de.yml", "conf/mms.three.co.uk.yml", "conf/mms.uscc.net.mail", "conf/mms.vodacom4me.co.za.yml", "conf/mms2r_media.yml", "conf/mobile.indosat.net.id.yml", "conf/msg.telus.com.yml", "conf/orangemms.net.yml", "conf/pm.sprint.com.yml", "conf/pxt.vodafone.net.nz.yml", "conf/rci.rogers.com.yml", "conf/sms.sasktel.com.yml", "conf/tmomail.net.yml", "conf/txt.bell.ca.yml", "conf/unicel.com.yml", "conf/vmpix.com.yml", "conf/vzwpix.com.yml", "conf/waw.plspictures.com.yml", "dev_tools/anonymizer.rb", "dev_tools/debug_sprint_nokogiri_parsing.rb", "init.rb", "lib/ext/mail.rb", "lib/ext/object.rb", "lib/mms2r.rb", "lib/mms2r/media.rb", "lib/mms2r/media/sprint.rb", "mms2r.gemspec", "test/fixtures/1nbox-2images-01.mail", "test/fixtures/1nbox-2images-02.mail", "test/fixtures/1nbox-2images-03.mail", "test/fixtures/1nbox-2images-04.mail", "test/fixtures/3ireland-mms-01.mail", "test/fixtures/ad_new.txt", "test/fixtures/alltel-image-01.mail", "test/fixtures/alltel-mms-01.mail", "test/fixtures/alltel-mms-03.mail", "test/fixtures/apple-double-image-01.mail", "test/fixtures/att-blackberry-02.mail", "test/fixtures/att-blackberry.mail", "test/fixtures/att-image-01.mail", "test/fixtures/att-image-02.mail", "test/fixtures/att-iphone-01.mail", "test/fixtures/att-iphone-02.mail", "test/fixtures/att-iphone-03.mail", "test/fixtures/att-text-01.mail", "test/fixtures/bell-canada-image-01.mail", "test/fixtures/cingularme-text-01.mail", "test/fixtures/cingularme-text-02.mail", "test/fixtures/dici_un_mois_georgie.txt", "test/fixtures/dobson-image-01.mail", "test/fixtures/dot.jpg", "test/fixtures/generic.mail", "test/fixtures/handsets.yml", "test/fixtures/helio-image-01.mail", "test/fixtures/helio-message-01.mail", "test/fixtures/iconv-fr-text-01.mail", "test/fixtures/indosat-image-01.mail", "test/fixtures/indosat-image-02.mail", "test/fixtures/info2go-image-01.mail", "test/fixtures/iphone-image-01.mail", "test/fixtures/luxgsm-image-01.mail", "test/fixtures/maroctelecom-france-mms-01.mail", "test/fixtures/mediamessaging_o2_co_uk-image-01.mail", "test/fixtures/mmode-image-01.mail", "test/fixtures/mms.ae-image-01.mail", "test/fixtures/mms.mycricket.com-pic-and-text.mail", "test/fixtures/mms.mycricket.com-pic.mail", "test/fixtures/mmsreply.t-mobile.co.uk-text-image-01.mail", "test/fixtures/mobile.mycingular.com-text-01.mail", "test/fixtures/mtn-southafrica-mms.mail", "test/fixtures/mycingular-image-01.mail", "test/fixtures/netcom-image-01.mail", "test/fixtures/nextel-image-01.mail", "test/fixtures/nextel-image-02.mail", "test/fixtures/nextel-image-03.mail", "test/fixtures/nextel-image-04.mail", "test/fixtures/o2-de-image-01.mail", "test/fixtures/orange-uk-image-01.mail", "test/fixtures/orangefrance-text-and-image.mail", "test/fixtures/orangepoland-text-01.mail", "test/fixtures/orangepoland-text-02.mail", "test/fixtures/pics.cingularme.com-image-01.mail", "test/fixtures/pxt-image-01.mail", "test/fixtures/rogers-canada-mms-01.mail", "test/fixtures/sasktel-image-01.mail", "test/fixtures/sprint-broken-image-01.mail", "test/fixtures/sprint-image-01.mail", "test/fixtures/sprint-new-image-01.mail", "test/fixtures/sprint-pcs-text-01.mail", "test/fixtures/sprint-purged-image-01.mail", "test/fixtures/sprint-text-01.mail", "test/fixtures/sprint-two-images-01.mail", "test/fixtures/sprint-video-01.mail", "test/fixtures/sprint.mov", "test/fixtures/suncom-blackberry.mail", "test/fixtures/telus-image-01.mail", "test/fixtures/three-uk-image-01.mail", "test/fixtures/tmo.blackberry.net-image-01.mail", "test/fixtures/tmobile-blackberry-02.mail", "test/fixtures/tmobile-blackberry.mail", "test/fixtures/tmobile-image-01.mail", "test/fixtures/tmobile-image-02.mail", "test/fixtures/unicel-image-01.mail", "test/fixtures/us-cellular-image-01.mail", "test/fixtures/verizon-blackberry.mail", "test/fixtures/verizon-image-01.mail", "test/fixtures/verizon-image-02.mail", "test/fixtures/verizon-image-03.mail", "test/fixtures/verizon-text-01.mail", "test/fixtures/verizon-video-01.mail", "test/fixtures/virgin-mobile-image-01.mail", "test/fixtures/virgin.ca-text-01.mail", "test/fixtures/vodacom4me-co-za-01.mail", "test/fixtures/vodacom4me-co-za-02.mail", "test/fixtures/vodacom4me-southafrica-mms-01.mail", "test/fixtures/vodacom4me-southafrica-mms-04.mail", "test/fixtures/vtext-text-01.mail", "test/fixtures/vzwpix.com-image-01.mail", "test/fixtures/waw.plspictures.com-image-01.mail", "test/hax.rb", "test/test_1nbox_net.rb", "test/test_bell_canada.rb", "test/test_bellsouth_net.rb", "test/test_helper.rb", "test/test_mediamessaging_o2_co_uk.rb", "test/test_messaging_nextel_com.rb", "test/test_messaging_sprintpcs_com.rb", "test/test_mms2r_media.rb", "test/test_mms_3ireland_ie.rb", "test/test_mms_ae.rb", "test/test_mms_alltel_com.rb", "test/test_mms_att_net.rb", "test/test_mms_dobson_net.rb", "test/test_mms_luxgsm_lu.rb", "test/test_mms_mobileiam_ma.rb", "test/test_mms_mtn_co_za.rb", "test/test_mms_mycricket_com.rb", "test/test_mms_myhelio_com.rb", "test/test_mms_netcom_no.rb", "test/test_mms_o2online_de.rb", "test/test_mms_three_co_uk.rb", "test/test_mms_uscc_net.rb", "test/test_mms_vodacom4me_co_za.rb", "test/test_mobile_indosat_net_id.rb", "test/test_msg_telus_com.rb", "test/test_orangemms_net.rb", "test/test_pm_sprint_com.rb", "test/test_pxt_vodafone_net_nz.rb", "test/test_rci_rogers_com.rb", "test/test_sms_sasktel_com.rb", "test/test_tmomail_net.rb", "test/test_unicel_com.rb", "test/test_vmpix_com.rb", "test/test_vzwpix_com.rb", "test/test_waw_plspictures_com.rb", "vendor/plugins/mms2r/lib/autotest/discover.rb", "vendor/plugins/mms2r/lib/autotest/mms2r.rb", ".gemtest"]
14
- s.homepage = "https://github.com/monde/mms2r"
15
- s.rdoc_options = ["--main", "README.txt"]
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = "mms2r"
18
- s.rubygems_version = "1.8.10"
19
- s.summary = "Extract user media from MMS (and not carrier cruft)"
20
- s.test_files = ["test/test_orangemms_net.rb", "test/test_waw_plspictures_com.rb", "test/test_mediamessaging_o2_co_uk.rb", "test/test_vzwpix_com.rb", "test/test_unicel_com.rb", "test/test_messaging_sprintpcs_com.rb", "test/test_mms_luxgsm_lu.rb", "test/test_rci_rogers_com.rb", "test/test_mms_uscc_net.rb", "test/test_mms_netcom_no.rb", "test/test_1nbox_net.rb", "test/test_sms_sasktel_com.rb", "test/test_mms_att_net.rb", "test/test_mobile_indosat_net_id.rb", "test/test_messaging_nextel_com.rb", "test/test_mms_mtn_co_za.rb", "test/test_mms_vodacom4me_co_za.rb", "test/test_pxt_vodafone_net_nz.rb", "test/test_mms_dobson_net.rb", "test/test_helper.rb", "test/test_msg_telus_com.rb", "test/test_mms_o2online_de.rb", "test/test_mms2r_media.rb", "test/test_bell_canada.rb", "test/test_tmomail_net.rb", "test/test_mms_3ireland_ie.rb", "test/test_pm_sprint_com.rb", "test/test_mms_alltel_com.rb", "test/test_mms_mobileiam_ma.rb", "test/test_mms_mycricket_com.rb", "test/test_bellsouth_net.rb", "test/test_mms_three_co_uk.rb", "test/test_vmpix_com.rb", "test/test_mms_myhelio_com.rb", "test/test_mms_ae.rb"]
6
+ gem.add_dependency 'rake', ['= 0.9.2.2']
7
+ gem.add_dependency 'nokogiri', ['>= 1.5.0']
8
+ gem.add_dependency 'mail', ['>= 2.4.0']
9
+ gem.add_dependency 'exifr', ['>= 1.0.3']
10
+ gem.add_dependency 'json', ['>= 1.6.0']
21
11
 
22
- if s.respond_to? :specification_version then
23
- s.specification_version = 3
12
+ gem.add_development_dependency "rdoc"
13
+ gem.add_development_dependency "simplecov"
14
+ gem.add_development_dependency 'test-unit'
15
+ gem.add_development_dependency 'mocha'
24
16
 
25
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.4"])
27
- s.add_runtime_dependency(%q<mail>, [">= 2.2.10"])
28
- s.add_runtime_dependency(%q<uuidtools>, [">= 2.1.1"])
29
- s.add_runtime_dependency(%q<exifr>, [">= 1.0.3"])
30
- s.add_development_dependency(%q<hoe>, ["~> 2.12"])
31
- else
32
- s.add_dependency(%q<nokogiri>, [">= 1.4.4"])
33
- s.add_dependency(%q<mail>, [">= 2.2.10"])
34
- s.add_dependency(%q<uuidtools>, [">= 2.1.1"])
35
- s.add_dependency(%q<exifr>, [">= 1.0.3"])
36
- s.add_dependency(%q<hoe>, ["~> 2.12"])
37
- end
38
- else
39
- s.add_dependency(%q<nokogiri>, [">= 1.4.4"])
40
- s.add_dependency(%q<mail>, [">= 2.2.10"])
41
- s.add_dependency(%q<uuidtools>, [">= 2.1.1"])
42
- s.add_dependency(%q<exifr>, [">= 1.0.3"])
43
- s.add_dependency(%q<hoe>, ["~> 2.12"])
44
- end
17
+ gem.name = "mms2r"
18
+ gem.version = MMS2R::Version.to_s
19
+ gem.platform = Gem::Platform::RUBY
20
+ gem.authors = ["Mike Mondragon"]
21
+ gem.email = ["mikemondragon@gmail.com"]
22
+ gem.homepage = "https://github.com/monde/mms2r"
23
+ gem.summary = "Extract user media from MMS (and not carrier cruft)"
24
+ gem.description = open(File.join(File.dirname(__FILE__), 'README.txt')).readlines[6...22].join
25
+ gem.rubyforge_project = "mms2r"
26
+ gem.rubygems_version = ">= 1.3.6"
27
+ gem.files = `git ls-files`.split("\n")
28
+ gem.require_path = ['lib']
29
+ gem.rdoc_options = ["--main", "README.txt"]
30
+ gem.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.TMail.txt", "README.txt"]
31
+
32
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
45
33
  end
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  - - Apple
3
3
  - iPhone
4
4
  - - Apple
@@ -0,0 +1,173 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
23
+
24
+ <head>
25
+
26
+
27
+
28
+ <meta name="ROBOTS" content="NOINDEX,NOFOLLOW"/>
29
+ <title>Pictures from Sprint</title>
30
+ <link rel="shortcut icon" type="image/x-icon" href="/retailers/PCSNEXTEL/ui-refresh/images/icons/favicon.ico"/>
31
+ <link rel="stylesheet" type="text/css" href="/combined.css.h-968716942.pack" charset="utf-8"/>
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ <link rel="stylesheet" type="text/css" href="/combined.css.h-865380446.pack" charset="utf-8"/>
44
+
45
+
46
+ <script type="text/javascript" src="/combined.js.h2135702050.pack" charset="utf-8"></script>
47
+ <script type="text/javascript" src="/js/ui-refresh/jsprops.jsp"></script>
48
+
49
+ </head>
50
+ <body class="yui-skin-sam" onload=";javascript:YAHOO.com.sprint.pm.util.functions.isLoginPageLoadedIntoIframe();" onunload="">
51
+
52
+
53
+ <div id="com-sprint-pm-panel-container" class="com-sprint-pm-panel-container"></div>
54
+
55
+ <div id="com-xoom-widget-result-dialog"></div>
56
+
57
+ <div id="custom-doc" class="yui-t7">
58
+
59
+
60
+
61
+ <div id="hd">
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+ <div id="com-sprint-pm-brand"><a href="http://www.sprintpcs.com" target="_blank"></a></div>
74
+
75
+ <div class="yui-g">
76
+ <img src="/retailers/PCSNEXTEL/ui-refresh/images/sprint-nav.gif" width="963" height="57" alt="Sprint Navigation" usemap="#sprint_nav_Map"/>
77
+ </div>
78
+
79
+
80
+
81
+
82
+
83
+ <map id="sprint_nav_Map" name="sprint_nav_Map">
84
+ <area shape="rect" title="Support" alt="Support" coords="537,15,620,44" href="http://support.sprint.com/support" onclick="javascript:YAHOO.com.sprint.pm.util.functions.removeSSOCookie();"/>
85
+ <area shape="rect" title="Community" alt="Community" coords="429,15,533,44" href="http://community.sprint.com/" onclick="javascript:YAHOO.com.sprint.pm.util.functions.removeSSOCookie();"/>
86
+ <area shape="rect" title="Digital Lounge" alt="Digital Lounge" coords="305,15,425,44" href="http://www.sprint.com/digitallounge" onclick="javascript:YAHOO.com.sprint.pm.util.functions.removeSSOCookie();"/>
87
+ <area shape="rect" title="Shop" alt="Shop" coords="230,15,300,44" href="http://www.nextel.com/en/shop/" onclick="javascript:YAHOO.com.sprint.pm.util.functions.removeSSOCookie();"/>
88
+ <area shape="rect" title="My Sprint" alt="My Sprint" coords="137,15,225,44" onclick="javascript:YAHOO.com.sprint.pm.util.functions.removeSSOCookie();" href="https://mysprint.sprint.com/mysprint/pages/secure/myaccount/landingPage.jsp"/>
89
+ <area shape="rect" title="Sprint.com" alt="Sprint.com" coords="0,0,110,44" onclick="javascript:YAHOO.com.sprint.pm.util.functions.removeSSOCookie();" href="http://www.sprint.com"/>
90
+ </map>
91
+ </div>
92
+
93
+ <div id="bd">
94
+ <div id="yui-main">
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+ <div class="yui-navset">
103
+ <ul class="yui-nav"><li class="yui-li-empty-tab-nav"></li></ul>
104
+ <div class="yui-content">
105
+ <div id="com-sprint-pm-configurable-content-holder" class="yui-g">
106
+
107
+ <div class="com-sprint-pm-one-panel-box">
108
+ <div class="com-sprint-pm-one-panel-content">
109
+ <div class="com-sprint-pm-title-heading"><img src="/retailers/PCSNEXTEL/ui-refresh/images/title/title_error.gif"/></div><br/><br/>
110
+ <div>Sorry, but the shared album or picture has been removed by its owner.</div><br/>
111
+ </div>
112
+ </div>
113
+
114
+ <div class="com-sprint-pm-one-panel-verisign-logo">
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+
120
+ </div><!-- /yui-main -->
121
+ </div> <!-- close bd -->
122
+
123
+ <div id="ft">
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <div id="com-sprint-pm-footer" >
144
+ <div class="yui-ge">
145
+ <div class="yui-u first">
146
+ <ul id="com-sprint-pm-footerLinks">
147
+ <li>Order by phone 1-800-2-SPRINT</li>
148
+ <li><a href="http://www2.sprint.com/mr/aboutsprint.do" target="_blank" title="About Us">About Us</a></li>
149
+ <li><a href="http://www.sprint.com/contactus/" target="_blank" title="Contact Us">Contact Us</a></li>
150
+ <li><a href="http://www.sprint.com/legal/picturemail_terms_and_conditions.html" target="_blank" title="Terms of Use">Terms of Use</a></li>
151
+ <li class="pm-last"><a href="http://www.sprint.com/legal/privacy.html" target="_blank" title="Privacy Policy">Privacy Policy</a></li>
152
+ </ul>
153
+ </div>
154
+ <div class="yui-u" id="com-sprint-pm-copyright">
155
+ &copy; 2012 Sprint. All rights reserved.<br/>
156
+ </div>
157
+ </div>
158
+
159
+
160
+
161
+ <script type="text/javascript" src="/combined.js.h845901428.pack" charset="utf-8"></script>
162
+ <script type="text/javascript"> _uacct = "UA-822828-4"; _udn=".sprintpcs.com"; YAHOO.com.sprint.pm.util.functions.urchinTracker(); </script>
163
+
164
+
165
+ </div>
166
+
167
+ </div> <!-- close custom-doc -->
168
+ </body>
169
+
170
+
171
+
172
+
173
+ </html>