muri 1.1.0 → 1.1.1

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.
@@ -8,7 +8,7 @@ MURI Currently supports:
8
8
  * Vimeo (single videos and albums)
9
9
  ** "API documentation":http://vimeo.com/api/docs/simple-api
10
10
  * Flickr (single images and sets)
11
- ** "API documentation":http://www.flickr.com/services/api/ or "[2]":http://developer.yahoo.com/flickr/
11
+ ** "API documentation":http://www.flickr.com/services/api/ or "API Doc 2":http://developer.yahoo.com/flickr/
12
12
  * Imageshack
13
13
  * Photobucket
14
14
  ** "API documentation":http://photobucket.com/developer/documentation
@@ -68,7 +68,6 @@ Assuming the URI was successfully parsed (thus @a.valid? == true@), all media ty
68
68
 
69
69
 
70
70
  * A direct media url for Youtube, Photobucket (photos, not albums), Twitpic, Imageshack (@http://img#{num}.imageshack.us/img#{num}/#{NUMBER}/#{IMAGENAME}@ format) and flickr (@http://farm#{num}.static.flickr.com/@ format)
71
- d
72
71
 
73
72
  <pre>
74
73
  <code>
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  :major: 1
3
3
  :minor: 1
4
- :patch: 0
4
+ :patch: 1
@@ -9,19 +9,21 @@ class Muri
9
9
  # match accepted formats
10
10
  class UnsupportedURI < ArgumentError; end
11
11
 
12
- PARSERS = { }
12
+ AVAILABLE_PARSERS = %w[Youtube Flickr Vimeo Imageshack Photobucket Facebook Twitpic Picasa].freeze
13
13
 
14
- # Defines is_#{service}? and is_#{service type constant}? methods, and sets service name constnat
15
- ['Youtube', 'Flickr', 'Vimeo', 'Imageshack', 'Photobucket', 'Facebook', 'Twitpic', 'Picasa'].each do |filter|
16
- eval "include Filter::#{filter}"
17
- is_service = "is_#{filter.downcase}?"
18
- define_method(is_service) { self.media_service == filter }
19
- self.constants.reject { |c| c !~ /^#{filter.upcase}/ }.each do |exp|
14
+ PARSERS = { }
15
+
16
+ # Defines is_#{service}? and is_#{service type}? methods, and sets service name constnat
17
+ AVAILABLE_PARSERS.each do |parser|
18
+ eval "include Filter::#{parser}"
19
+ is_service = "is_#{parser.downcase}?"
20
+ define_method(is_service) { self.media_service == parser }
21
+ self.constants.reject { |c| c !~ /^#{parser.upcase}/ }.each do |exp|
20
22
  define_method("is_#{exp.downcase}?") do
21
23
  self.media_api_type == eval(exp) && self.instance_eval(is_service)
22
24
  end
23
25
  end
24
- const_set "#{filter.upcase}_SERVICE_NAME", "#{filter}"
26
+ const_set "#{parser.upcase}_SERVICE_NAME", "#{parser}"
25
27
  end
26
28
 
27
29
  def self.parse(url)
@@ -35,7 +37,7 @@ class Muri
35
37
 
36
38
  def initialize(url)
37
39
  @info = { }
38
- _parse(url)
40
+ parse(url)
39
41
  end
40
42
 
41
43
  # Determine if Muri object is valid (errors mean not valid)
@@ -59,8 +61,9 @@ class Muri
59
61
  PARSERS.keys.detect {|klass| klass.parsable?(uri)}
60
62
  end
61
63
 
62
- def _parse(raw_url)
64
+ def parse(raw_url)
63
65
  begin
66
+ raw_url = URI.encode(URI.decode(raw_url)) unless raw_url.nil?
64
67
  self.uri = URI.parse(raw_url)
65
68
  if self.uri.scheme.nil?
66
69
  raw_url = "http://#{raw_url}"
@@ -59,7 +59,7 @@ class Muri
59
59
  end
60
60
 
61
61
  # The media_api_id is the PID which can be searched for in the facebook photos/albums table
62
- self.media_api_id = (media_creator.to_i << 32) +self.media_id.to_i
62
+ self.media_api_id = (media_creator.to_i << 32) + self.media_id.to_i
63
63
  end
64
64
  end
65
65
  end
@@ -18,13 +18,15 @@ class Muri
18
18
  def picasa_parse
19
19
  self.media_service = PICASA_SERVICE_NAME
20
20
  url_common = "http://picasaweb.google.com"
21
- reencoded_url = URI.parse(URI.encode self.uri.to_s)
22
21
 
23
- if reencoded_url.path =~ /^\/(.[^\/]+)\/(.+)/i
22
+ #I hate to have to do this, but it's the best way I can think of to get the hash symbol
23
+ #reencoded_url = URI.parse(URI.encode self.uri.to_s)
24
+
25
+ if self.uri.path =~ /^\/(.[^\/]+)\/(.[^\/]+)/i
24
26
  username = $1
25
27
  album_photoid = $2.split("%23")
26
28
  photoid = album_photoid.last
27
- album = album_photoid[0..-2].join("#")#in case other hash symbols exist
29
+ album = album_photoid[0..-2].join("#") #in case other hash symbols exist
28
30
  self.media_id = photoid
29
31
  self.media_website = "#{url_common}/#{username}/#{album}##{photoid}"
30
32
  self.media_api_type = PICASA_PHOTO
@@ -36,7 +36,7 @@ class Muri
36
36
  elsif (self.uri.path =~ REGEX_YOUTUBE_PLAYLIST_DIRECT)
37
37
  self.media_id = $1
38
38
  self.media_api_type = YOUTUBE_PLAYLIST
39
- elsif (self.uri.path =~ REGEX_YOUTUBE_PLAYLIST_WATCH) && (params['p'])
39
+ elsif (self.uri.path =~ REGEX_YOUTUBE_PLAYLIST_WATCH) && params['p']
40
40
  self.media_id = params['p']
41
41
  self.media_api_type = YOUTUBE_PLAYLIST
42
42
  else
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muri}
8
- s.version = "1.1.0"
8
+ s.version = "1.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["William Schneider"]
12
- s.date = %q{2010-04-01}
12
+ s.date = %q{2010-04-05}
13
13
  s.description = %q{Automatically get media information from the URL.}
14
14
  s.email = %q{bananastalktome@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -48,14 +48,14 @@ Gem::Specification.new do |s|
48
48
  s.rubygems_version = %q{1.3.6}
49
49
  s.summary = %q{Media URI Parser}
50
50
  s.test_files = [
51
- "test/facebook_test.rb",
52
- "test/twitpic_test.rb",
51
+ "test/error_test.rb",
52
+ "test/facebook_test.rb",
53
+ "test/flickr_test.rb",
54
+ "test/imageshack_test.rb",
53
55
  "test/photobucket_test.rb",
54
- "test/vimeo_test.rb",
55
56
  "test/picasa_test.rb",
56
- "test/imageshack_test.rb",
57
- "test/error_test.rb",
58
- "test/flickr_test.rb",
57
+ "test/twitpic_test.rb",
58
+ "test/vimeo_test.rb",
59
59
  "test/youtube_test.rb"
60
60
  ]
61
61
 
@@ -33,9 +33,16 @@ describe "Parse Errors" do
33
33
  m.errors.should == "Muri::UnsupportedURI"
34
34
  end
35
35
  end
36
-
36
+
37
+ it "should parse URI with spaces" do
38
+ a = Muri.parse 'http://i105.photobucket.com/albums/m226/Mascutti/Vikas couches with%20paintings/v214.jpg'
39
+ lambda { a.uri.path }.should_not raise_exception()
40
+ end
41
+
37
42
  it "should not bomb if no URI is provided" do
38
43
  lambda { Muri.parse nil }.should_not raise_exception()
39
44
  end
40
-
41
45
  end
46
+
47
+
48
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 1
8
- - 0
9
- version: 1.1.0
8
+ - 1
9
+ version: 1.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - William Schneider
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-01 00:00:00 -04:00
17
+ date: 2010-04-05 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -83,12 +83,12 @@ signing_key:
83
83
  specification_version: 3
84
84
  summary: Media URI Parser
85
85
  test_files:
86
+ - test/error_test.rb
86
87
  - test/facebook_test.rb
87
- - test/twitpic_test.rb
88
+ - test/flickr_test.rb
89
+ - test/imageshack_test.rb
88
90
  - test/photobucket_test.rb
89
- - test/vimeo_test.rb
90
91
  - test/picasa_test.rb
91
- - test/imageshack_test.rb
92
- - test/error_test.rb
93
- - test/flickr_test.rb
92
+ - test/twitpic_test.rb
93
+ - test/vimeo_test.rb
94
94
  - test/youtube_test.rb