mms2r 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,16 @@
1
+ ### 3.1.0 / 2010-07-09 (Dick "Magic Ears" Knubbler - music producer)
2
+ * 8 minor enhancements
3
+ * Detects additional Bell/AT&T domain sbcglobal.net as a handset
4
+ * Detects additional Virgin mobile domains pixmbl.com vmobl.com as a handset
5
+ * Expanded mobile phone detection for handset makers by : Casio, Google Nexus
6
+ One, LG Electronics, Motorola, Pantech, Qualcom, Samsung, Sprint, UTStarCom
7
+ * EXIF Reader (exifr) is integral to MMS2R and is now a required gem
8
+ * upgrade Mail to 2.2.5
9
+ * depend on latest gems
10
+ * corrected example - Jason Hooper
11
+ * added As Seen On The Internet to README that lists sites known to be using
12
+ MMS2R in some fashion
13
+
1
14
  ### 3.0.1 / 2010-03-28 (Lavona Succuboso - leader of "Succuboso Explosion")
2
15
 
3
16
  * 1 minor enhancement
data/Manifest.txt CHANGED
@@ -71,6 +71,7 @@ test/fixtures/cingularme-text-02.mail
71
71
  test/fixtures/dobson-image-01.mail
72
72
  test/fixtures/dot.jpg
73
73
  test/fixtures/generic.mail
74
+ test/fixtures/handsets.yml
74
75
  test/fixtures/helio-image-01.mail
75
76
  test/fixtures/helio-message-01.mail
76
77
  test/fixtures/iconv-fr-text-01.mail
data/README.txt CHANGED
@@ -31,7 +31,7 @@ Corpus of carriers currently processed by MMS2R:
31
31
  * AT&T/Cingular/Legacy: mms.att.net, txt.att.net, mmode.com, mms.mycingular.com,
32
32
  cingularme.com, mobile.mycingular.com pics.cingularme.com
33
33
  * Bell Canada: txt.bell.ca
34
- * Bell South / Suncom: bellsouth.net
34
+ * Bell South / Suncom / SBC Global: bellsouth.net, sbcglobal.net
35
35
  * Cricket Wireless: mms.mycricket.com
36
36
  * Dobson/Cellular One: mms.dobson.net
37
37
  * Helio: mms.myhelio.com
@@ -57,27 +57,48 @@ Corpus of carriers currently processed by MMS2R:
57
57
  * Unicel: unicel.com, info2go.com
58
58
  (note: mobile number is tucked away in a text/plain part for unicel.com)
59
59
  * Verizon: vzwpix.com, vtext.com
60
- * Virgin Mobile: vmpix.com
60
+ * Virgin Mobile: vmpix.com, pixmbl.com, vmobl.com
61
61
  * Virgin Mobile of Canada: vmobile.ca
62
62
  * Vodacom: mms.vodacom4me.co.za
63
63
 
64
64
  Corpus of smart phones known to MMS2R:
65
- * Blackberry variants
65
+ * Apple iPhone variants
66
+ * Blackberry / Research In Motion variants
67
+ * Casio variants
66
68
  * Droid variants
69
+ * Google / Nexus One variants
67
70
  * HTC variants (T-Mobile Dash, Sprint HERO)
68
- * Apple iPhone variants
71
+ * LG Electronics variants
72
+ * Motorola variants
73
+ * Pantech variants
74
+ * Qualcom variants
75
+ * Samsung variants
76
+ * Sprint variants
77
+ * UTStarCom variants
78
+
79
+ As Seen On The Internets - sites known to be using MMS2R in some fashion
80
+
81
+ * twitpic.com [http://www.twitpic.com/]
82
+ * fanchatter.com [http://www.fanchatter.com/]
83
+ * camura.com [http://www.camura.com/]
84
+ * eachday.com [http://www.eachday.com/]
85
+ * beenup2.com [http://www.beenup2.com/]
86
+ * snapmylife.com [http://www.snapmylife.com/]
87
+ * email the author to be listed here
88
+
69
89
 
70
90
  == FEATURES
71
91
 
72
92
  * #default_media and #default_text methods return a File that can be used in
73
- attachment_fu
74
- * #process supports blocks to for enumerating over the content of the MMS
93
+ attachment_fu or Paperclip
94
+ * #process supports blocks for enumerating over the content of the MMS
75
95
  * #process can be made lazy when :process => :lazy is passed to new
76
96
  * logging is enabled when :logger => your_logger is passed to new
77
97
  * an mms instance acts like a Mail object, any methods not defined on the
78
- instance are delegated to its underlying Mail object
98
+ instance are delegated to it's underlying Mail object
79
99
  * #device_type? returns a symbol representing a device or smartphone type
80
- Known smartphones thus far: iPhone, BlackBerry, T-Mobile Dash, Droid
100
+ Known smartphones thus far: iPhone, BlackBerry, T-Mobile Dash, Droid,
101
+ Samsung
81
102
 
82
103
  == BOOKS
83
104
 
@@ -92,7 +113,7 @@ http://peepcode.com/products/mms2r-pdf
92
113
  # required for the example
93
114
  require 'fileutils'
94
115
 
95
- mail = MMS2R.new(Mail.read('some_saved_mail.file'))
116
+ mail = MMS2R::Media.new(Mail.read('some_saved_mail.file'))
96
117
  puts "mail has default carrier subject" if mail.subject.empty?
97
118
 
98
119
  # access the sender's phone number
@@ -153,14 +174,10 @@ http://peepcode.com/products/mms2r-pdf
153
174
 
154
175
  == REQUIREMENTS
155
176
 
156
- * Mail
157
- * Nokogiri (for mms from Sprint)
158
- * UUIDTools
159
-
160
- == OPTIONAL
161
-
162
- * exifr - install exifr for exif access on default jpeg or tiff media, and
163
- smart phone detection
177
+ * Mail (mail)
178
+ * Nokogiri (nokogiri)
179
+ * UUIDTools (uuidtools)
180
+ * EXIF Reader (exif)
164
181
 
165
182
  == INSTALL
166
183
 
@@ -172,7 +189,7 @@ git clone git://github.com/monde/mms2r.git
172
189
 
173
190
  == AUTHORS
174
191
 
175
- Copyright (c) 2007-2008 by Mike Mondragon (blog[http://blog.mondragon.cc/])
192
+ Copyright (c) 2007-2010 by Mike Mondragon (blog[http://plasti.cx/])
176
193
 
177
194
  MMS2R's Flickr page[http://www.flickr.com/photos/8627919@N05/]
178
195
 
data/Rakefile CHANGED
@@ -21,18 +21,22 @@ Hoe.spec('mms2r') do |p|
21
21
  p.url = p.paragraphs_of('README.txt', 1).first.strip
22
22
  p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
23
23
  p.extra_deps << ['nokogiri', '>= 1.4.0']
24
- p.extra_deps << ['mail', '>= 2.1.0']
25
- p.extra_deps << ['uuidtools', '>= 2.1.0']
24
+ p.extra_deps << ['mail', '>= 2.2.5']
25
+ p.extra_deps << ['uuidtools', '>= 2.1.1']
26
+ p.extra_deps << ['exifr', '>= 1.0.1']
26
27
  p.clean_globs << 'coverage'
27
28
  end
28
29
 
29
30
  begin
30
- Rcov::RcovTask.new do |t|
31
- t.test_files = FileList['test/test*.rb']
32
- t.verbose = true
33
- t.rcov_opts << "--exclude rcov.rb,hpricot.rb,hpricot/.*\.rb"
31
+ require 'rcov/rcovtask'
32
+ Rcov::RcovTask.new do |rcov|
33
+ rcov.pattern = 'test/**/test_*.rb'
34
+ rcov.verbose = true
35
+ rcov.rcov_opts << "--exclude rcov.rb"
34
36
  end
35
- rescue NameError
37
+ rescue
38
+ task :rcov => :check_dependencies
36
39
  end
37
40
 
41
+
38
42
  # vim: syntax=Ruby
data/conf/aliases.yml CHANGED
@@ -5,6 +5,7 @@ mmode.com: mms.att.net
5
5
  mms.mycingular.com: mms.att.net
6
6
  mobile.mycingular.com: mms.att.net
7
7
  pics.cingularme.com: mms.att.net
8
+ sbcglobal.net: mms.att.net
8
9
  vtext.com: vzwpix.com
9
10
  orange.fr: orangemms.net
10
11
  mmsemail.orange.pl: orangemms.net
@@ -14,4 +15,6 @@ tmo.blackberry.net: tmomail.net
14
15
  info2go.com: unicel.com
15
16
  mms.telusmobility.com: msg.telus.com
16
17
  sprintpcs.com: pm.sprint.com
18
+ pixmbl.com: vmpix.com
17
19
  vmobile.ca: vmpix.com
20
+ vmobl.com: vmpix.com
data/conf/mms2r_media.yml CHANGED
@@ -41,8 +41,23 @@ device_types:
41
41
  # created and sent by the device, the regex is used by mms2r to detect the
42
42
  # model string
43
43
  models:
44
- :iphone: !ruby/regexp /iPhone/i
45
44
  :blackberry: !ruby/regexp /BlackBerry/i
46
45
  :dash: !ruby/regexp /T-Mobile Dash/i
47
46
  :droid: !ruby/regexp /Droid/i
48
47
  :htc: !ruby/regexp /HTC|Eris|HERO200/i
48
+ :iphone: !ruby/regexp /iPhone/i
49
+ makes:
50
+ :apple: !ruby/regexp /^Apple$/i
51
+ :casio: !ruby/regexp /^CASIO$/i
52
+ :dash: !ruby/regexp /T-Mobile Dash/i
53
+ :google: !ruby/regexp /^google$/i
54
+ :htc: !ruby/regexp /^HTC/i
55
+ :lge: !ruby/regexp /^(LG|CX87BL05)/i
56
+ :motorola: !ruby/regexp /^Motorola/i
57
+ :pantech: !ruby/regexp /^PANTECH$/i
58
+ :qualcomm: !ruby/regexp /^MSM6/i
59
+ :research_in_motion: !ruby/regexp /^(RIM|Research In Motion)$/i
60
+ :samsung: !ruby/regexp /^(SAMSUNG|ES.M800|M6550B-SAM-4480)/i
61
+ :seoul_electronics: !ruby/regexp /^ISUS0/i
62
+ :sprint: !ruby/regexp /^Sprint$/i
63
+ :utstarcom: !ruby/regexp /^T1A_UC1.88$/i
data/lib/mms2r.rb CHANGED
@@ -39,7 +39,7 @@ module MMS2R
39
39
  ##
40
40
  # MMS2R library version
41
41
 
42
- VERSION = '3.0.1'
42
+ VERSION = '3.1.0'
43
43
 
44
44
  end
45
45
 
@@ -54,14 +54,15 @@ module MMS2R
54
54
  end
55
55
 
56
56
  require 'rubygems'
57
+ gem 'mail', '= 2.2.5'
57
58
  require 'mail'
58
- gem 'mail', '>= 2.1.2'
59
59
  require 'fileutils'
60
60
  require 'pathname'
61
61
  require 'tmpdir'
62
62
  require 'yaml'
63
63
  require 'uuidtools'
64
64
  require 'iconv'
65
+ require 'exifr'
65
66
 
66
67
  require File.join(File.dirname(__FILE__), 'mail_ext')
67
68
  require File.join(File.dirname(__FILE__), 'mms2r', 'media')
data/lib/mms2r/media.rb CHANGED
@@ -185,7 +185,7 @@ module MMS2R
185
185
  ret = case
186
186
  when from.include?(from_domain)
187
187
  from_domain
188
- when return_path.any?
188
+ when return_path.present?
189
189
  return_path
190
190
  else
191
191
  from_domain
@@ -218,6 +218,7 @@ module MMS2R
218
218
  @number = nil
219
219
  @subject = nil
220
220
  @body = nil
221
+ @exif = nil
221
222
  @default_media = nil
222
223
  @default_text = nil
223
224
 
@@ -428,12 +429,13 @@ module MMS2R
428
429
  # See the transform section in the discussion of the built-in
429
430
  # configuration.
430
431
 
431
- def transform_text(type, text, original_nencoding = 'ISO-8859-1')
432
- return type, text unless transforms = config['transform'][type]
432
+ def transform_text(type, text, original_encoding = 'ISO-8859-1')
433
+
434
+ return type, text if !config['transform'] || !(transforms = config['transform'][type])
433
435
 
434
436
  #convert to UTF-8
435
437
  begin
436
- c = Iconv.new('UTF-8', original_nencoding )
438
+ c = Iconv.new('UTF-8', original_encoding )
437
439
  utf_t = c.iconv(text)
438
440
  rescue Exception => e
439
441
  utf_t = text
@@ -540,26 +542,25 @@ module MMS2R
540
542
 
541
543
  def device_type?
542
544
 
543
- begin
544
- # rely on native exif first with exifr gem if its loaded
545
- require 'exifr'
546
- file = attachment(['image'])
547
- if file
548
- original = file.original_filename
549
- @exif = case original
550
- when /\.je?pg$/i
551
- EXIFR::JPEG.new(file)
552
- when /\.tiff?$/i
553
- EXIFR::TIFF.new(file)
554
- end
555
- if @exif
556
- models = config['device_types']['models'] rescue {}
557
- models.each do |model, regex|
558
- return model if @exif.model =~ regex
559
- end
545
+ file = attachment(['image'])
546
+ if file
547
+ original = file.original_filename
548
+ @exif = case original
549
+ when /\.je?pg$/i
550
+ EXIFR::JPEG.new(file)
551
+ when /\.tiff?$/i
552
+ EXIFR::TIFF.new(file)
553
+ end
554
+ if @exif
555
+ models = config['device_types']['models'] rescue {}
556
+ models.each do |model, regex|
557
+ return model if @exif.model =~ regex
558
+ end
559
+ makes = config['device_types']['makes'] rescue {}
560
+ makes.each do |make, regex|
561
+ return make if @exif.make =~ regex
560
562
  end
561
563
  end
562
- rescue LoadError => err
563
564
  end
564
565
 
565
566
  headers = config['device_types']['headers'] rescue {}
@@ -746,11 +747,13 @@ module MMS2R
746
747
  mime_type = nil
747
748
 
748
749
  #get the largest file
749
- files.each do |f|
750
- if File.size(f) > size
751
- size = File.size(f)
752
- file = File.new(f)
753
- mime_type = media.detect{|type,files| files.detect{|fl| fl == f}}[0]
750
+ files.each do |path|
751
+ if File.size(path) > size
752
+ size = File.size(path)
753
+ file = File.new(path)
754
+ media.each do |type,files|
755
+ mime_type = type if files.detect{ |_path| _path == path }
756
+ end
754
757
  end
755
758
  end
756
759
 
data/mms2r.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{mms2r}
5
- s.version = "3.0.0"
5
+ s.version = "3.1.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Mike Mondragon"]
9
- s.date = %q{2010-03-28}
9
+ s.date = %q{2010-07-09}
10
10
  s.description = %q{== DESCRIPTION
11
11
 
12
12
  MMS2R is a library that decodes the parts of an MMS message to disk while
@@ -22,7 +22,7 @@ MMS2R can be used to process any multipart email to conveniently access the
22
22
  parts the mail is comprised of.}
23
23
  s.email = ["mikemondragon@gmail.com"]
24
24
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.TMail.txt", "README.txt"]
25
- s.files = ["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", "dev_tools/github.rb", "init.rb", "lib/mail_ext.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/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/dobson-image-01.mail", "test/fixtures/dot.jpg", "test/fixtures/generic.mail", "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-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/test_1nbox_net.rb", "test/test_bell_canada.rb", "test/test_bellsouth_net.rb", "test/test_github.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"]
25
+ s.files = [".gitignore", "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", "dev_tools/github.rb", "init.rb", "lib/mail_ext.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/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/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-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/test_1nbox_net.rb", "test/test_bell_canada.rb", "test/test_bellsouth_net.rb", "test/test_github.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"]
26
26
  s.homepage = %q{http://mms2r.rubyforge.org/
27
27
  }
28
28
  s.rdoc_options = ["--main", "README.txt"]
@@ -38,23 +38,26 @@ parts the mail is comprised of.}
38
38
 
39
39
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
40
40
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.0"])
41
- s.add_runtime_dependency(%q<mail>, [">= 2.1.0"])
42
- s.add_runtime_dependency(%q<uuidtools>, [">= 2.1.0"])
41
+ s.add_runtime_dependency(%q<mail>, [">= 2.2.5"])
42
+ s.add_runtime_dependency(%q<uuidtools>, [">= 2.1.1"])
43
+ s.add_runtime_dependency(%q<exifr>, [">= 1.0.1"])
43
44
  s.add_development_dependency(%q<rubyforge>, [">= 2.0.3"])
44
45
  s.add_development_dependency(%q<gemcutter>, [">= 0.4.1"])
45
46
  s.add_development_dependency(%q<hoe>, [">= 2.5.0"])
46
47
  else
47
48
  s.add_dependency(%q<nokogiri>, [">= 1.4.0"])
48
- s.add_dependency(%q<mail>, [">= 2.1.0"])
49
- s.add_dependency(%q<uuidtools>, [">= 2.1.0"])
49
+ s.add_dependency(%q<mail>, [">= 2.2.5"])
50
+ s.add_dependency(%q<uuidtools>, [">= 2.1.1"])
51
+ s.add_dependency(%q<exifr>, [">= 1.0.1"])
50
52
  s.add_dependency(%q<rubyforge>, [">= 2.0.3"])
51
53
  s.add_dependency(%q<gemcutter>, [">= 0.4.1"])
52
54
  s.add_dependency(%q<hoe>, [">= 2.5.0"])
53
55
  end
54
56
  else
55
57
  s.add_dependency(%q<nokogiri>, [">= 1.4.0"])
56
- s.add_dependency(%q<mail>, [">= 2.1.0"])
57
- s.add_dependency(%q<uuidtools>, [">= 2.1.0"])
58
+ s.add_dependency(%q<mail>, [">= 2.2.5"])
59
+ s.add_dependency(%q<uuidtools>, [">= 2.1.1"])
60
+ s.add_dependency(%q<exifr>, [">= 1.0.1"])
58
61
  s.add_dependency(%q<rubyforge>, [">= 2.0.3"])
59
62
  s.add_dependency(%q<gemcutter>, [">= 0.4.1"])
60
63
  s.add_dependency(%q<hoe>, [">= 2.5.0"])
@@ -0,0 +1,119 @@
1
+ ---
2
+ - - Apple
3
+ - iPhone
4
+ - - Apple
5
+ - iPhone 3G
6
+ - - Apple
7
+ - iPhone 3GS
8
+ - - CASIO
9
+ - G'z One TYPE-S
10
+ - - CASIO
11
+ - G'zOne ROCK
12
+ - - CX87BL05
13
+ - LG8700
14
+ - - ES.M800
15
+ - SPH-M800
16
+ - - HTC
17
+ - Eris
18
+ - - HTC
19
+ - HERO200
20
+ - - HTC
21
+ - HTC_TyTN_II
22
+ - - HTC
23
+ - RAPH800
24
+ - - HTC
25
+ - T-Mobile G1
26
+ - - HTC
27
+ - T-Mobile myTouch 3G
28
+ - - HTC-ST7377
29
+ - HTC-ST7377
30
+ - - ISUS02232009
31
+ - Seoul Electronics & Telecom SIM120B 1.3M
32
+ - - ISUS09012008
33
+ - Seoul Electronics & Telecom SIM120B 1.3M
34
+ - - LG Electronics
35
+ - VX-8800
36
+ - - LG Electronics
37
+ - VX-9700
38
+ - - LG Electronics
39
+ - VX11000
40
+ - - LG Electronics, Inc.
41
+ - LG RUMOR2
42
+ - - LGE
43
+ - CU920
44
+ - - M6550B-SAM-4480
45
+ - SYSTEMLSI S5K4BAFB 2.0 MP
46
+ - - MSM6100
47
+ - Omni_vision-9650
48
+ - - MSM6500
49
+ - LSI_S5K4AAFA
50
+ - - Motorola
51
+ - 1.3 Megapixel
52
+ - - Motorola
53
+ - Droid
54
+ - - Motorola
55
+ - Motorola Phone
56
+ - - Motorola C.451.01.04.17.08
57
+ - 2.0 Megapixel
58
+ - - PANTECH
59
+ - C790
60
+ - - RIM
61
+ - BlackBerry 8100 Series
62
+ - - Research In Motion
63
+ - BlackBerry 8310
64
+ - - Research In Motion
65
+ - BlackBerry 8320
66
+ - - Research In Motion
67
+ - BlackBerry 8330
68
+ - - Research In Motion
69
+ - BlackBerry 8330m
70
+ - - Research In Motion
71
+ - BlackBerry 8530
72
+ - - Research In Motion
73
+ - BlackBerry 8900
74
+ - - Research In Motion
75
+ - BlackBerry 9700
76
+ - - SAMSUNG
77
+ - SAMSUNG
78
+ - - SAMSUNG
79
+ - SCH-U350
80
+ - - SAMSUNG
81
+ - SCH-U450
82
+ - - SAMSUNG
83
+ - SCH-U490
84
+ - - SAMSUNG
85
+ - SGH-A167
86
+ - - SAMSUNG
87
+ - SGH-A437
88
+ - - SAMSUNG
89
+ - SGH-E250
90
+ - - SAMSUNG
91
+ - SGH-T459
92
+ - - SAMSUNG
93
+ - SGH-T729
94
+ - - SAMSUNG
95
+ - SPH-M900
96
+ - - SAMSUNG
97
+ - Samsung SCH-U750
98
+ - - SAMSUNG Electronics
99
+ - SGH-i637
100
+ - - Samsung Electronics
101
+ - A727
102
+ - - Samsung Electronics
103
+ - A767
104
+ - - Samsung Electronics
105
+ - SGH-A737
106
+ - - Samsung Electronics
107
+ - SGH-T749
108
+ - - Samsung Electronics
109
+ - SGH-T819
110
+ - - Samsung Electronics
111
+ - T639
112
+ - - Sprint
113
+ - KATANA Eclipse X
114
+ - - T-Mobile Dash
115
+ - T-Mobile Dash
116
+ - - T1A_UC1.88
117
+ - Micron MT9M113 1.3MP YUV
118
+ - - google
119
+ - Nexus One
@@ -21,6 +21,7 @@ Mime-Version: 1.0
21
21
  Content-Type: multipart/mixed;
22
22
  boundary="----=_Part_3189_7839582.1195059640065"
23
23
 
24
+
24
25
  ------=_Part_3189_7839582.1195059640065
25
26
  Content-Type: multipart/alternative;
26
27
  boundary="----=_Part_3191_16589396.1195059640154"
@@ -168,7 +169,7 @@ ECkC/IANDMCEog5xBQZAA8yD2gQpICXmLxwiegyI4J6n0qrWOU1XzNJhQPbE8YPkLY8Uc1iwPJiX
168
169
  KnTogk/B47AlMLHlPq3DeNdYBwXFI9A6m6dFDGBATTiR6eUYhzky6TQDWOCST5e61BIYNamZIxE6
169
170
  W/okohUipbf76i/K2lSoqrU7b10qjQjEIcAOtrCFzWtcKyMgADs=
170
171
  ------=_Part_3189_7839582.1195059640065
171
- Content-Type: IMAGE/GIF; name=Drinks.gif
172
+ Content-Type: image/gif; name=Drinks.gif
172
173
  Content-Transfer-Encoding: base64
173
174
  Content-Disposition: attachment; filename=Drinks.gif
174
175
  Content-Description: Drinks.gif
data/test/test_helper.rb CHANGED
@@ -3,11 +3,10 @@ require 'set'
3
3
  require 'net/http'
4
4
  require 'net/https'
5
5
  require 'pp'
6
- require 'exifr'
7
6
  require 'tempfile'
8
7
  require 'test/unit'
9
8
  require 'mocha'
10
- require File.join(File.dirname(__FILE__), "..", "lib", "mms2r")
9
+ require File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mms2r')
11
10
 
12
11
  begin require 'redgreen'; rescue LoadError; end
13
12
 
@@ -20,30 +19,34 @@ module MMS2R
20
19
  assert(File::size(file) == size, "file #{file} is #{File::size(file)} bytes, not #{size} bytes")
21
20
  end
22
21
 
22
+ def fixture(file)
23
+ File.join(File.expand_path(File.dirname(__FILE__)), "fixtures", file)
24
+ end
25
+
23
26
  def mail_fixture(file)
24
- "#{File.dirname(__FILE__)}/fixtures/#{file}"
27
+ fixture(file)
25
28
  end
26
29
 
27
30
  def mail(name)
28
31
  Mail.read(mail_fixture(name))
29
32
  end
30
33
 
31
- def smart_phone_mock(model_text = 'iPhone', jpeg = true)
32
- mail = mock('mail')
33
- mail.expects(:from).at_least_once.returns(['joe@example.com'])
34
- mail.expects(:return_path).at_least_once.returns('<joe@example.com>')
35
- mail.expects(:message_id).returns('abcd0123')
36
- mail.expects(:multipart?).returns(true)
34
+ def smart_phone_mock(make_text = 'Apple', model_text = 'iPhone', jpeg = true)
35
+ mail = stub('mail',
36
+ :from => ['joe@example.com'],
37
+ :return_path => '<joe@example.com>',
38
+ :message_id => 'abcd0123',
39
+ :multipart? => true,
40
+ :header => {})
37
41
 
38
- part = mock('part')
39
- part.expects(:part_type?).at_least_once.returns("image/#{jpeg ? 'jpeg' : 'tiff'}")
40
- part.expects(:body).at_least_once.returns(Mail::Body.new('abc'))
41
- part.expects(:multipart?).at_least_once.returns(false)
42
- part.expects(:filename).returns("foo.#{jpeg ? 'jpg' : 'tif'}")
42
+ part = stub('part',
43
+ :part_type? => "image/#{jpeg ? 'jpeg' : 'tiff'}",
44
+ :body => Mail::Body.new('abc'),
45
+ :multipart? => false,
46
+ :filename => "foo.#{jpeg ? 'jpg' : 'tif'}" )
43
47
 
44
- mail.expects(:parts).returns([part])
45
- exif = mock('exif')
46
- exif.expects(:model).at_least_once.returns(model_text)
48
+ mail.stubs(:parts).returns([part])
49
+ exif = stub('exif', :make => make_text, :model => model_text)
47
50
  if jpeg
48
51
  EXIFR::JPEG.expects(:new).at_least_once.returns(exif)
49
52
  else
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), "test_helper")
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
2
2
 
3
3
  class TestMms2rMedia < Test::Unit::TestCase
4
4
  include MMS2R::TestHelper
@@ -232,24 +232,24 @@ class TestMms2rMedia < Test::Unit::TestCase
232
232
  assert_equal ['text/plain', ''], mms.transform_text('text/plain', " \n\nimage/jpeg")
233
233
 
234
234
  # has a bad regexp
235
- mms.expects(:config).once.returns({'transform' => {type => [['(hello)', 'world']]}})
235
+ mms.expects(:config).at_least_once.returns({'transform' => {type => [['(hello)', 'world']]}})
236
236
  assert_equal result, mms.transform_text(type, text)
237
237
 
238
238
  # matches in config
239
- mms.expects(:config).once.returns({'transform' => {type => [['/(hello)/', 'world']]}})
239
+ mms.expects(:config).at_least_once.returns({'transform' => {type => [["/(hello)/", 'world']]}})
240
240
  assert_equal [type, 'world'], mms.transform_text(type, text)
241
241
 
242
- mms.expects(:config).once.returns({'transform' => {type => [['/^Ignore this part, (.+)/', '\1']]}})
242
+ mms.expects(:config).at_least_once.returns({'transform' => {type => [['/^Ignore this part, (.+)/', '\1']]}})
243
243
  assert_equal [type, text], mms.transform_text(type, "Ignore this part, " + text)
244
244
 
245
245
  # chaining transforms
246
- mms.expects(:config).once.returns({'transform' => {type => [['/(hello)/', 'world'],
246
+ mms.expects(:config).at_least_once.returns({'transform' => {type => [['/(hello)/', 'world'],
247
247
  ['/(world)/', 'mars']]}})
248
248
  assert_equal [type, 'mars'], mms.transform_text(type, text)
249
249
 
250
250
  # has a Iconv problem
251
251
  Iconv.expects(:new).raises
252
- mms.expects(:config).once.returns({'transform' => {type => [['(hello)', 'world']]}})
252
+ mms.expects(:config).at_least_once.returns({'transform' => {type => [['(hello)', 'world']]}})
253
253
  assert_equal result, mms.transform_text(type, text)
254
254
  end
255
255
 
@@ -264,7 +264,6 @@ class TestMms2rMedia < Test::Unit::TestCase
264
264
  assert_not_nil file
265
265
  assert_equal true, File::exist?(file)
266
266
  text = IO.readlines("#{file}").join
267
- #assert_match(/D'ici un mois Géorgie/, text)
268
267
  assert_match(/D'ici un mois G\303\251orgie/, text)
269
268
  assert_match(/D'ici un mois Géorgie/, text)
270
269
  assert_equal("sample email message Fwd: sub D'ici un mois G\303\251orgie", mms.subject)
@@ -323,12 +322,12 @@ class TestMms2rMedia < Test::Unit::TestCase
323
322
  assert_nil mms.send(:attachment, ['text'])
324
323
  end
325
324
 
326
- def test_type_from_filename(filename)
325
+ def test_type_from_filename
327
326
  mms = MMS2R::Media.new stub_mail
328
327
  assert_equal 'image/jpeg', mms.send(:type_from_filename, "example.jpg")
329
328
  end
330
329
 
331
- def test_type_from_filename_should_be_nil(filename)
330
+ def test_type_from_filename_should_be_nil
332
331
  mms = MMS2R::Media.new stub_mail
333
332
  assert_nil mms.send(:type_from_filename, "example.example")
334
333
  end
@@ -766,67 +765,69 @@ class TestMms2rMedia < Test::Unit::TestCase
766
765
  end
767
766
 
768
767
  def test_exif
769
- mail = smart_phone_mock('iPhone')
768
+ mail = smart_phone_mock
770
769
  mms = MMS2R::Media.new(mail)
771
770
  assert_equal 'iPhone', mms.exif.model
772
771
  end
773
772
 
774
- def test_exif_load_error
775
- mms = MMS2R::Media.new stub_mail
776
- mms.expects(:require).with('exifr').raises(LoadError)
777
-
778
- assert_equal :unknown, mms.device_type?
779
- end
780
-
781
773
  def test_iphone_device_type_by_exif
782
- mail = smart_phone_mock('iPhone')
774
+ mail = smart_phone_mock
783
775
  mms = MMS2R::Media.new(mail)
784
776
  assert_equal :iphone, mms.device_type?
785
777
  assert_equal true, mms.is_mobile?
786
778
  end
787
779
 
788
780
  def test_faux_tiff_iphone_device_type_by_exif
789
- mail = smart_phone_mock('iPhone', jpeg = false)
781
+ mail = smart_phone_mock('Apple', 'iPhone', jpeg = false)
790
782
  mms = MMS2R::Media.new(mail)
791
783
  assert_equal :iphone, mms.device_type?
792
784
  assert_equal true, mms.is_mobile?
793
785
  end
794
786
 
795
787
  def test_blackberry_device_type_by_exif
796
- mail = smart_phone_mock('BlackBerry')
788
+ mail = smart_phone_mock('Research In Motion', 'BlackBerry')
797
789
  mms = MMS2R::Media.new(mail)
798
790
  assert_equal :blackberry, mms.device_type?
799
791
  assert_equal true, mms.is_mobile?
800
792
  end
801
793
 
802
794
  def test_dash_device_type_by_exif
803
- mail = smart_phone_mock('T-Mobile Dash')
795
+ mail = smart_phone_mock('T-Mobile Dash', 'T-Mobile Dash')
804
796
  mms = MMS2R::Media.new(mail)
805
797
  assert_equal :dash, mms.device_type?
806
798
  assert_equal true, mms.is_mobile?
807
799
  end
808
800
 
809
801
  def test_droid_device_type_by_exif
810
- mail = smart_phone_mock('Droid')
802
+ mail = smart_phone_mock('Motorola', 'Droid')
811
803
  mms = MMS2R::Media.new(mail)
812
804
  assert_equal :droid, mms.device_type?
813
805
  assert_equal true, mms.is_mobile?
814
806
  end
815
807
 
816
808
  def test_htc_eris_device_type_by_exif
817
- mail = smart_phone_mock('Eris')
809
+ mail = smart_phone_mock('HTC', 'Eris')
818
810
  mms = MMS2R::Media.new(mail)
819
811
  assert_equal :htc, mms.device_type?
820
812
  assert_equal true, mms.is_mobile?
821
813
  end
822
814
 
823
815
  def test_htc_hero_device_type_by_exif
824
- mail = smart_phone_mock('HERO200')
816
+ mail = smart_phone_mock('HTC', 'HERO200')
825
817
  mms = MMS2R::Media.new(mail)
826
818
  assert_equal :htc, mms.device_type?
827
819
  assert_equal true, mms.is_mobile?
828
820
  end
829
821
 
822
+ def test_handsets_by_exif
823
+ handsets = YAML.load_file(fixture('handsets.yml'))
824
+ handsets.each do |handset|
825
+ mail = smart_phone_mock(handset.first, handset.last)
826
+ mms = MMS2R::Media.new(mail)
827
+ assert_equal true, mms.is_mobile?, "mms with make #{mms.exif.make}, and model #{mms.exif.model}, should be considered a mobile device"
828
+ end
829
+ end
830
+
830
831
  def test_blackberry_device_type
831
832
  berries = ['att-blackberry.mail',
832
833
  'suncom-blackberry.mail',
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 3
7
- - 0
8
7
  - 1
9
- version: 3.0.1
8
+ - 0
9
+ version: 3.1.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mike Mondragon
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-28 00:00:00 -07:00
17
+ date: 2010-07-09 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -40,9 +40,9 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  segments:
42
42
  - 2
43
- - 1
44
- - 0
45
- version: 2.1.0
43
+ - 2
44
+ - 5
45
+ version: 2.2.5
46
46
  type: :runtime
47
47
  version_requirements: *id002
48
48
  - !ruby/object:Gem::Dependency
@@ -55,14 +55,28 @@ dependencies:
55
55
  segments:
56
56
  - 2
57
57
  - 1
58
- - 0
59
- version: 2.1.0
58
+ - 1
59
+ version: 2.1.1
60
60
  type: :runtime
61
61
  version_requirements: *id003
62
62
  - !ruby/object:Gem::Dependency
63
- name: rubyforge
63
+ name: exifr
64
64
  prerelease: false
65
65
  requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 1
71
+ - 0
72
+ - 1
73
+ version: 1.0.1
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: rubyforge
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
66
80
  requirements:
67
81
  - - ">="
68
82
  - !ruby/object:Gem::Version
@@ -72,11 +86,11 @@ dependencies:
72
86
  - 3
73
87
  version: 2.0.3
74
88
  type: :development
75
- version_requirements: *id004
89
+ version_requirements: *id005
76
90
  - !ruby/object:Gem::Dependency
77
91
  name: gemcutter
78
92
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
93
+ requirement: &id006 !ruby/object:Gem::Requirement
80
94
  requirements:
81
95
  - - ">="
82
96
  - !ruby/object:Gem::Version
@@ -86,11 +100,11 @@ dependencies:
86
100
  - 1
87
101
  version: 0.4.1
88
102
  type: :development
89
- version_requirements: *id005
103
+ version_requirements: *id006
90
104
  - !ruby/object:Gem::Dependency
91
105
  name: hoe
92
106
  prerelease: false
93
- requirement: &id006 !ruby/object:Gem::Requirement
107
+ requirement: &id007 !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - ">="
96
110
  - !ruby/object:Gem::Version
@@ -100,7 +114,7 @@ dependencies:
100
114
  - 0
101
115
  version: 2.5.0
102
116
  type: :development
103
- version_requirements: *id006
117
+ version_requirements: *id007
104
118
  description: |-
105
119
  == DESCRIPTION
106
120
 
@@ -200,6 +214,7 @@ files:
200
214
  - test/fixtures/dobson-image-01.mail
201
215
  - test/fixtures/dot.jpg
202
216
  - test/fixtures/generic.mail
217
+ - test/fixtures/handsets.yml
203
218
  - test/fixtures/helio-image-01.mail
204
219
  - test/fixtures/helio-message-01.mail
205
220
  - test/fixtures/iconv-fr-text-01.mail