mms2r 1.0.7 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/History.txt +19 -1
  2. data/Manifest.txt +38 -19
  3. data/README.txt +40 -8
  4. data/Rakefile +2 -2
  5. data/conf/mms2r_cingular_me_media_subject.yml +3 -0
  6. data/conf/{mms2r_cingularmedia_transform.yml → mms2r_cingular_me_media_transform.yml} +1 -0
  7. data/conf/mms2r_dobson_media_ignore.yml +4 -0
  8. data/conf/mms2r_media_ignore.yml +4 -0
  9. data/conf/mms2r_media_subject.yml +3 -0
  10. data/conf/mms2r_my_cingular_media_subject.yml +3 -0
  11. data/conf/mms2r_nextel_media_ignore.yml +11 -0
  12. data/conf/mms2r_sprint_media_ignore.yml +5 -0
  13. data/conf/mms2r_sprint_media_subject.yml +3 -0
  14. data/conf/{mms2r_tmobilemedia_ignore.yml → mms2r_t_mobile_media_ignore.yml} +2 -5
  15. data/conf/mms2r_verizon_media_ignore.yml +4 -0
  16. data/conf/mms2r_verizon_media_transform.yml +6 -0
  17. data/dev_tools/debug_sprint_hpricot_parsing.rb +82 -0
  18. data/lib/mms2r.rb +61 -0
  19. data/lib/mms2r/cingular_me_media.rb +23 -0
  20. data/lib/mms2r/dobson_media.rb +4 -5
  21. data/lib/mms2r/{mmode_media.rb → m_mode_media.rb} +4 -4
  22. data/lib/mms2r/media.rb +283 -160
  23. data/lib/mms2r/my_cingular_media.rb +15 -0
  24. data/lib/mms2r/nextel_media.rb +9 -3
  25. data/lib/mms2r/sprint_media.rb +137 -29
  26. data/lib/mms2r/sprint_pcs_media.rb +16 -0
  27. data/lib/mms2r/t_mobile_media.rb +21 -0
  28. data/lib/mms2r/verizon_media.rb +11 -3
  29. data/lib/mms2r/vtext_media.rb +16 -0
  30. data/test/files/cingularme-text-02.mail +14 -0
  31. data/test/files/hello_world_empty_text.mail +6 -0
  32. data/test/files/hello_world_mail_multipart.mail +7 -0
  33. data/test/files/{cingular-image-01.mail → mycingular-image-01.mail} +0 -0
  34. data/test/files/simple-with-two-images-two-texts.mail +49 -0
  35. data/test/files/{sprint-image-02.mail → sprint-broken-image-01.mail} +1 -1
  36. data/test/files/sprint-image-01.mail +1 -1
  37. data/test/files/sprint-pcs-text-01.mail +8 -0
  38. data/test/files/sprint-text-01.mail +195 -8
  39. data/test/files/sprint-two-images-01.mail +198 -0
  40. data/test/files/sprint-video-01.mail +1 -1
  41. data/test/files/verizon-image-02.mail +1 -1
  42. data/test/files/vtext-text-01.mail +1 -1
  43. data/test/test_mms2r_cingular_me_media.rb +51 -0
  44. data/test/test_mms2r_dobson_media.rb +46 -0
  45. data/test/{test_mms2r_mmode.rb → test_mms2r_m_mode_media.rb} +1 -1
  46. data/test/test_mms2r_media.rb +160 -74
  47. data/test/test_mms2r_my_cingular_media.rb +31 -0
  48. data/test/test_mms2r_nextel_media.rb +100 -0
  49. data/test/test_mms2r_sprint_media.rb +221 -0
  50. data/test/test_mms2r_sprint_pcs_media.rb +27 -0
  51. data/test/{test_mms2r_tmobile.rb → test_mms2r_t_mobile_media.rb} +13 -13
  52. data/test/test_mms2r_verizon_media.rb +96 -0
  53. data/test/test_mms2r_vtext_media.rb +28 -0
  54. data/vendor/plugins/mms2r/lib/autotest/discover.rb +3 -0
  55. data/vendor/plugins/mms2r/lib/autotest/mms2r.rb +33 -0
  56. metadata +62 -37
  57. data/conf/mms2r_nextelmedia_ignore.yml +0 -10
  58. data/conf/mms2r_sprintmedia_ignore.yml +0 -10
  59. data/conf/mms2r_verizonmedia_ignore.yml +0 -3
  60. data/conf/mms2r_verizonmedia_transform.yml +0 -3
  61. data/lib/mms2r/cingular_media.rb +0 -11
  62. data/lib/mms2r/tmobile_media.rb +0 -11
  63. data/lib/mms2r/version.rb +0 -12
  64. data/test/test_mms2r_cingular.rb +0 -58
  65. data/test/test_mms2r_dobson.rb +0 -36
  66. data/test/test_mms2r_nextel.rb +0 -132
  67. data/test/test_mms2r_sprint.rb +0 -174
  68. data/test/test_mms2r_verizon.rb +0 -102
data/History.txt CHANGED
@@ -1,3 +1,21 @@
1
+ == 1.1.0 / 2007-06-08 (Toki Wartooth)
2
+
3
+ * get_body to return body text (Luke Francl)
4
+ * get_subject returns "" for default subjects now
5
+ * default subjects listed in yaml by carrier in conf directory
6
+ * added granularity to Cingular, Sprint, and Verizon carrier services (Will Jessup)
7
+ * refactored Sprint instance to process all media (Will Jessup + Mike)
8
+ * optimized text transformations (Will Jessup)
9
+ * properly handle ISO-8859-1 and UTF-8 text (Will Jessup)
10
+ * autotest powers activate! (ZenTest autotest discovery enabled)
11
+ * configuration file ignores, transforms, and subjects all store Regexp's
12
+ * Put vendor Text::Format & TMail::Mail as an external subversion dependency
13
+ to the 1.2 stable branch of Rails ActionMailer
14
+ * added get_number method to return the phone number associated with this MMS
15
+ * get_media and get_text attachment_fu helper return the largest piece of media
16
+ of that type if the more than one exits in the media (Luke Francl)
17
+ * added block support to process() method (Shane Vitarana)
18
+
1
19
  == 1.0.7 / 2007-04-27 (Senator Stampingston)
2
20
 
3
21
  * patch submitted by Luke Francl
@@ -20,7 +38,7 @@
20
38
  * made ignore_media? start its text check from the start of the file (Luke)
21
39
  * added new text transform for Verizon messages (Luke)
22
40
  * updated Nextel ignore conf (Luke)
23
- * added addtional samples and tests for T-Mobile & Verizon (Luke)
41
+ * added additional samples and tests for T-Mobile & Verizon (Luke)
24
42
  * cleaned up MMS2R::Media documentation
25
43
  * added Sprint broken image test for when media goes stale on their content server
26
44
  * fixed teardown typo in lots of plases
data/Manifest.txt CHANGED
@@ -2,22 +2,31 @@ History.txt
2
2
  Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
- conf/mms2r_cingularmedia_transform.yml
6
- conf/mms2r_nextelmedia_ignore.yml
7
- conf/mms2r_sprintmedia_ignore.yml
8
- conf/mms2r_tmobilemedia_ignore.yml
9
- conf/mms2r_verizonmedia_ignore.yml
10
- conf/mms2r_verizonmedia_transform.yml
5
+ conf/mms2r_cingular_me_media_subject.yml
6
+ conf/mms2r_cingular_me_media_transform.yml
7
+ conf/mms2r_dobson_media_ignore.yml
8
+ conf/mms2r_media_ignore.yml
9
+ conf/mms2r_media_subject.yml
10
+ conf/mms2r_my_cingular_media_subject.yml
11
+ conf/mms2r_nextel_media_ignore.yml
12
+ conf/mms2r_sprint_media_ignore.yml
13
+ conf/mms2r_sprint_media_subject.yml
14
+ conf/mms2r_t_mobile_media_ignore.yml
15
+ conf/mms2r_verizon_media_ignore.yml
16
+ conf/mms2r_verizon_media_transform.yml
17
+ dev_tools/debug_sprint_hpricot_parsing.rb
11
18
  lib/mms2r.rb
12
- lib/mms2r/cingular_media.rb
19
+ lib/mms2r/cingular_me_media.rb
13
20
  lib/mms2r/dobson_media.rb
21
+ lib/mms2r/m_mode_media.rb
14
22
  lib/mms2r/media.rb
15
- lib/mms2r/mmode_media.rb
23
+ lib/mms2r/my_cingular_media.rb
16
24
  lib/mms2r/nextel_media.rb
17
25
  lib/mms2r/sprint_media.rb
18
- lib/mms2r/tmobile_media.rb
26
+ lib/mms2r/sprint_pcs_media.rb
27
+ lib/mms2r/t_mobile_media.rb
19
28
  lib/mms2r/verizon_media.rb
20
- lib/mms2r/version.rb
29
+ lib/mms2r/vtext_media.rb
21
30
  lib/vendor/text/format.rb
22
31
  lib/vendor/tmail.rb
23
32
  lib/vendor/tmail/address.rb
@@ -42,23 +51,28 @@ lib/vendor/tmail/scanner_r.rb
42
51
  lib/vendor/tmail/stringio.rb
43
52
  lib/vendor/tmail/tmail.rb
44
53
  lib/vendor/tmail/utils.rb
45
- test/files/cingular-image-01.mail
46
54
  test/files/cingularme-text-01.mail
55
+ test/files/cingularme-text-02.mail
47
56
  test/files/dobson-image-01.mail
48
57
  test/files/dot.jpg
58
+ test/files/hello_world_empty_text.mail
49
59
  test/files/hello_world_mail_multipart.mail
50
60
  test/files/hello_world_mail_plain_no_content_type.mail
51
61
  test/files/hello_world_mail_plain_with_content_type.mail
52
62
  test/files/mmode-image-01.mail
63
+ test/files/mycingular-image-01.mail
53
64
  test/files/nextel-image-01.mail
54
65
  test/files/nextel-image-02.mail
55
66
  test/files/nextel-image-03.mail
56
67
  test/files/nextel-image-04.mail
68
+ test/files/simple-with-two-images-two-texts.mail
57
69
  test/files/simple_image.mail
58
70
  test/files/simple_multipart_alternative.mail
71
+ test/files/sprint-broken-image-01.mail
59
72
  test/files/sprint-image-01.mail
60
- test/files/sprint-image-02.mail
73
+ test/files/sprint-pcs-text-01.mail
61
74
  test/files/sprint-text-01.mail
75
+ test/files/sprint-two-images-01.mail
62
76
  test/files/sprint-video-01.mail
63
77
  test/files/sprint.mov
64
78
  test/files/tmobile-image-01.mail
@@ -69,11 +83,16 @@ test/files/verizon-text-01.mail
69
83
  test/files/verizon-video-01.mail
70
84
  test/files/vtext-text-01.mail
71
85
  test/test_helper.rb
72
- test/test_mms2r_cingular.rb
73
- test/test_mms2r_dobson.rb
86
+ test/test_mms2r_cingular_me_media.rb
87
+ test/test_mms2r_dobson_media.rb
88
+ test/test_mms2r_m_mode_media.rb
74
89
  test/test_mms2r_media.rb
75
- test/test_mms2r_mmode.rb
76
- test/test_mms2r_nextel.rb
77
- test/test_mms2r_sprint.rb
78
- test/test_mms2r_tmobile.rb
79
- test/test_mms2r_verizon.rb
90
+ test/test_mms2r_my_cingular_media.rb
91
+ test/test_mms2r_nextel_media.rb
92
+ test/test_mms2r_sprint_media.rb
93
+ test/test_mms2r_sprint_pcs_media.rb
94
+ test/test_mms2r_t_mobile_media.rb
95
+ test/test_mms2r_verizon_media.rb
96
+ test/test_mms2r_vtext_media.rb
97
+ vendor/plugins/mms2r/lib/autotest/discover.rb
98
+ vendor/plugins/mms2r/lib/autotest/mms2r.rb
data/README.txt CHANGED
@@ -8,7 +8,7 @@ MMS2R is a library that decodes the parts of an MMS message to disk while
8
8
  stripping out advertising injected by the cellphone carriers. MMS messages are
9
9
  multipart email and the carriers often inject branding into these messages. Use
10
10
  MMS2R if you want to get at the real user generated content from a MMS without
11
- having to deal with the garbage from the carriers.
11
+ having to deal with the cruft from the carriers.
12
12
 
13
13
  If MMS2R is not aware of a particular carrier no extra processing is done
14
14
  to the MMS other than decoding and consolidating its media.
@@ -31,15 +31,18 @@ Corpus of carriers currently processed by MMS2R:
31
31
 
32
32
  == FEATURES
33
33
 
34
- * TMail from 1.3.1 of ActionMailer is shipped as a vendor library with MMS2R
35
34
  * get_media and get_text methods return a File that can be used in attachment_fu
35
+
36
36
  == SYNOPSIS:
37
37
 
38
+ # required to use the MMS2R gem proper
38
39
  require 'rubygems'
39
40
  require 'mms2r'
40
- require 'mms2r/media'
41
+
42
+ # required for the example
41
43
  require 'tmail'
42
44
  require 'fileutils'
45
+ require 'logger'
43
46
 
44
47
  # TMail::Mail.parse is what ActionMailer::Base.receive(email) does, see:
45
48
  # http://wiki.rubyonrails.com/rails/pages/HowToReceiveEmailsWithActionMailer
@@ -50,14 +53,17 @@ Corpus of carriers currently processed by MMS2R:
50
53
  # writes the user generated media to disk in a temporary subdirectory
51
54
  mms.process
52
55
 
53
- puts "MMS has default carrier subject!" if mms.get_subject.nil?
56
+ puts "MMS has default carrier subject!" if mms.get_subject.eql?("")
57
+
58
+ # access the senders phone number
59
+ puts "MMS was from phone #{mms.get_number}"
54
60
 
55
- # most MMS are either image or video, get_media will blindly return
56
- # the first video or image found
61
+ # most MMS are either image or video, get_media will return the largest
62
+ # (non-advertising) video or image found
57
63
  file = mms.get_media
58
64
  puts "MMS had a media: #{file.inspect}" unless file.nil?
59
65
 
60
- # get_text will blindly return the first (non-advertising) text found
66
+ # get_text return the largest (non-advertising) text found
61
67
  file = mms.get_text
62
68
  puts "MMS had some text: #{file.inspect}" unless file.nil?
63
69
 
@@ -80,6 +86,14 @@ Corpus of carriers currently processed by MMS2R:
80
86
  #remove all the media that was put to temporary disk
81
87
  mms.purge
82
88
 
89
+ # Block support, process and receive all media types of video.
90
+ # Purge is called at the conclusion of the block so be sure
91
+ # to do something with the bits you are looking for
92
+ mms.process do |media_type, files|
93
+ # assumes a Clip model
94
+ Clip.create(:uploaded_data => files.first, :title => "From phone") if media_type =~ /video/
95
+ end
96
+
83
97
  == REQUIREMENTS:
84
98
 
85
99
  * Hpricot
@@ -88,15 +102,33 @@ Corpus of carriers currently processed by MMS2R:
88
102
 
89
103
  * sudo gem install mms2r
90
104
 
105
+ == CONTRIBUTE:
106
+
107
+ If you contribute a patch that we accept then generally we'll
108
+ give you developer rights for the project on RubyForge. Please
109
+ ensure your work includes 100% test converage. Your text
110
+ coverage can be verified with the rcov rake task. The library
111
+ is ZenTest autotest discovery enabled so running autotest in the
112
+ root of the project is very helpful during development.
113
+
91
114
  == Authors
92
115
 
93
116
  Copyright (c) 2007 by Mike Mondragon (blog[http://blog.mondragon.cc/])
94
117
 
118
+ MMS2R's Flickr page[http://www.flickr.com/photos/8627919@N05/]
119
+
120
+ == Contributors
121
+
122
+ * Luke Francl (blog[http://railspikes.com/])
123
+ * Will Jessup (blog[http://www.willjessup.com/])
124
+ * Shane Vitarana (blog[http://www.shanesbrain.net/])
125
+
95
126
  == LICENSE:
96
127
 
97
128
  (The MIT License)
98
129
 
99
- Copyright (c) 2007 Mike Mondragon. All rights reserved.
130
+ Copyright (c) 2007 Mike Mondragon (mikemondragon@gmail.com).
131
+ All rights reserved.
100
132
 
101
133
  Permission is hereby granted, free of charge, to any person obtaining
102
134
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -11,8 +11,8 @@ require 'mms2r/media'
11
11
  Hoe.new('mms2r', MMS2R::Media::VERSION) do |p|
12
12
  p.rubyforge_name = 'mms2r'
13
13
  p.author = 'Mike Mondragon'
14
- p.email = 'mike@mondragon.cc'
15
- p.summary = 'Extract media from MMS'
14
+ p.email = 'mikemondragon@gmail.com'
15
+ p.summary = 'Extract user media from MMS (and not carrier cruft)'
16
16
  p.description = p.paragraphs_of('README.txt', 2..6).join("\n\n")
17
17
  p.url = p.paragraphs_of('README.txt', 1).first.strip
18
18
  p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
@@ -0,0 +1,3 @@
1
+ ---
2
+ - !ruby/regexp /^Multimedia message$/
3
+
@@ -4,3 +4,4 @@ text/plain:
4
4
  ===============================================\n\
5
5
  Brought to you by, Cingular Wireless Messaging\n\
6
6
  http://www.CingularMe.COM/": ""
7
+
@@ -0,0 +1,4 @@
1
+ ---
2
+ application/smil:
3
+ - !ruby/regexp /^<smil><head><layout><root-layout width=/
4
+
@@ -0,0 +1,4 @@
1
+ ---
2
+ text/plain:
3
+ - !ruby/regexp /^$/
4
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ - !ruby/regexp /^\(no subject\)$/
3
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ - !ruby/regexp /^Multimedia message$/
3
+
@@ -0,0 +1,11 @@
1
+ ---
2
+ text/plain:
3
+ - !ruby/regexp /^This is an MMS message. 20\d\d Sprint Nextel. All rights reserved./
4
+ - !ruby/regexp /^This is an MMS message. Please go to http:\/\/mms.nextel.com\/mms\/anon\/do\/legacy\/viewDirect/
5
+ - !ruby/regexp /^This is a multi-part message in MIME format./
6
+ text/html:
7
+ - !ruby/regexp /^<html><body> This is an MMS message. <br><center> 20\d\d Sprint Nextel. All rights reserved <br><\/center> <\/body><\/html>/
8
+ - !ruby/regexp /^<html><body> <center>This is an MMS message. <br><center> 20\d\d Sprint Nextel. All rights reserved<\/center><br><img/
9
+ - !ruby/regexp /^<html><body> This is an MMS message. <br><center> 20\d\d Sprint Nextel. All rights reserved<\/center> <\/body><\/html>/
10
+ - !ruby/regexp /^<html><body> This is an MMS message. Please go to <a href="http:\/\/mms.nextel.com\/mms\/anon\/do\/legacy\/viewDirect/
11
+
@@ -0,0 +1,5 @@
1
+ ---
2
+ text/plain:
3
+ - !ruby/regexp /^You have new Picture Mail! Click Go/View to see now./
4
+ - !ruby/regexp /^You have new Video Mail! Click Go/View to see now./
5
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ - !ruby/regexp /^You have new Picture Mail!$/
3
+
@@ -1,9 +1,6 @@
1
1
  ---
2
- text/html:
3
- - |
4
- <html>
5
- <head>
6
- <title>T-Mobile</title>
2
+ text/html:
3
+ - !ruby/regexp /^<html> <head> <title>T-Mobile</title>/
7
4
  image/gif:
8
5
  - dottedline350.gif
9
6
  - dottedline600.gif
@@ -0,0 +1,4 @@
1
+ ---
2
+ text/plain:
3
+ - !ruby/regexp /^This message was sent using PIX-FLIX Messaging service from Verizon Wireless!.*$/
4
+
@@ -0,0 +1,6 @@
1
+ ---
2
+ text/plain:
3
+ ? !ruby/regexp /^(.+?)\s+This message was sent using PIX-FLIX Messaging service from Verizon Wireless!.*/m
4
+ : \1
5
+
6
+
@@ -0,0 +1,82 @@
1
+ require 'rubygems'
2
+ require 'hpricot'
3
+ require 'net/http'
4
+ require 'rubygems'
5
+ require 'hpricot'
6
+ require 'pp'
7
+
8
+ if ARGV[0].nil?
9
+ puts "please execute with a file path to a Sprint HTML file that was extracted from a MMS"
10
+ puts "ruby #{$0} MYFILE"
11
+ exit
12
+ end
13
+
14
+ doc = open(ARGV[0]) { |f| Hpricot(f) }
15
+
16
+ puts "TITLE: #{doc.at('title').inner_html}"
17
+
18
+ #phone number is tucked away in the comment in the head
19
+ c = doc.search("/html/head/comment//").last
20
+ t = c.content.gsub(/\s+/m," ").strip
21
+ number = / name=&quot;MDN&quot;&gt;(\d+)&lt;/.match(t)[1]
22
+ puts "NUMBER: #{number}"
23
+
24
+ #if there is a text message with the MMS its in the
25
+ #inner html of the only pre on the page
26
+ text = doc.search("/html/body//pre").first.inner_html
27
+ puts "TEXT: #{text}"
28
+
29
+ # just see what they say this MMS is it really doesn't
30
+ # mean anything, the content is in paux image with
31
+ # a RECIPIENT in its URI path
32
+ trs = doc.search("/html/body//tr")
33
+ text = trs[3].search("/td/p/font/b/")
34
+ case text.text
35
+ when /You have a Video Mail from/
36
+ puts "it claims to be a video"
37
+ when /You have a Picture Mail from /
38
+ puts "it claims to be an image"
39
+ else
40
+ puts "what is it? #{text.text}"
41
+ end
42
+
43
+ # group all the images together
44
+ srcs = Array.new
45
+ imgs = doc.search("/html/body//img")
46
+ imgs.each do |i|
47
+ src = i.attributes['src']
48
+ #next unless /pictures.sprintpcs.com\/+mmps\/RECIPIENT\//.match(src)
49
+ #we don't want to double fetch content and we only
50
+ #want to fetch media from the content server, you get
51
+ #a clue about that as there is a RECIPIENT in the URI path
52
+ next unless /mmps\/RECIPIENT\//.match(src)
53
+ next if srcs.detect{|s| s.eql?(src)}
54
+ srcs << src
55
+ end
56
+
57
+ # now fetch the media
58
+ puts "there are #{srcs.size} sources to fetch"
59
+ cnt = 0
60
+ srcs.each do |src|
61
+ puts "--"
62
+ puts "FETCHING:\n #{src}"
63
+
64
+ url = URI.parse(src)
65
+ #res = Net::HTTP.get_response(url)
66
+ agent = "Mozilla/5.0 (X11; U; Minix3 i686 (x86_64); en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1"
67
+ res = Net::HTTP.start(url.host, url.port) { |http|
68
+ req = Net::HTTP::Get.new(url.request_uri, {'User-Agent' => agent})
69
+ http.request(req)
70
+ }
71
+
72
+ # prep and write a file
73
+ base = /\/RECIPIENT\/([^\/]+)\//.match(src)[1]
74
+ ext = /^[^\/]+\/(.+)/.match(res.content_type)[1]
75
+ file_name ="#{base}.#{cnt}.#{ext}"
76
+ puts "writing file: #{file_name}"
77
+ File.open(file_name,'w'){ |f| f.write(res.body) }
78
+ puts "file is sized #{File.size(file_name)}"
79
+ cnt = cnt + 1
80
+ end
81
+
82
+ puts "no images or video" if srcs.size == 0
data/lib/mms2r.rb CHANGED
@@ -1,3 +1,64 @@
1
+ #--
2
+ # Copyright (c) 2007 by Mike Mondragon (mikemondragon@gmail.com)
3
+ #
4
+ # Please see the LICENSE file for licensing information.
5
+ #++
6
+
1
7
  $:.unshift(File.dirname(__FILE__) + "/vendor/")
8
+ require 'mms2r/media'
9
+ require 'mms2r/cingular_me_media'
10
+ require 'mms2r/dobson_media'
11
+ require 'mms2r/m_mode_media'
12
+ require 'mms2r/my_cingular_media'
13
+ require 'mms2r/nextel_media'
14
+ require 'mms2r/sprint_media'
15
+ require 'mms2r/sprint_pcs_media'
16
+ require 'mms2r/t_mobile_media'
17
+ require 'mms2r/verizon_media'
18
+ require 'mms2r/vtext_media'
19
+
2
20
  module MMS2R
21
+
22
+ ##
23
+ # A hash of carriers that MMS2r is currently aware of.
24
+ # The factory create method uses the hostname portion
25
+ # of an MMS's From header to select the correct type
26
+ # of MMS2R::Media product. If a specific media product
27
+ # is not available MMS2R::Media should be used.
28
+
29
+ CARRIER_CLASSES = {
30
+ 'cingularme.com' => MMS2R::CingularMeMedia,
31
+ 'mms.dobson.net' => MMS2R::DobsonMedia,
32
+ 'mmode.com' => MMS2R::MModeMedia,
33
+ 'mms.mycingular.com' => MMS2R::MyCingularMedia,
34
+ 'messaging.nextel.com' => MMS2R::NextelMedia,
35
+ 'pm.sprint.com' => MMS2R::SprintMedia,
36
+ 'messaging.sprintpcs.com' => MMS2R::SprintPcsMedia,
37
+ 'tmomail.net' => MMS2R::TMobileMedia,
38
+ 'vzwpix.com' => MMS2R::VerizonMedia,
39
+ 'vtext.com' => MMS2R::VtextMedia
40
+ }
41
+
42
+ ##
43
+ # A hash of file extensions for common mimetypes
44
+
45
+ EXT = {
46
+ 'text/plain' => 'txt',
47
+ 'text/html' => 'html',
48
+ 'image/png' => 'png',
49
+ 'image/gif' => 'gif',
50
+ 'image/jpeg' => 'jpg',
51
+ 'video/quicktime' => 'mov',
52
+ 'video/3gpp2' => '3g2'
53
+ }
54
+
55
+ class MMS2R::Media
56
+
57
+ ##
58
+ # MMS2R Library version
59
+
60
+ VERSION = '1.1.0'
61
+
62
+ end
63
+
3
64
  end