muri 0.0.13 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +8 -8
- data/VERSION.yml +2 -2
- data/lib/muri/base.rb +54 -74
- data/lib/muri/filter.rb +13 -0
- data/lib/muri/filters/facebook.rb +42 -44
- data/lib/muri/filters/flickr.rb +62 -34
- data/lib/muri/filters/imageshack.rb +23 -26
- data/lib/muri/filters/photobucket.rb +71 -59
- data/lib/muri/filters/twitpic.rb +20 -22
- data/lib/muri/filters/vimeo.rb +41 -33
- data/lib/muri/filters/youtube.rb +39 -36
- data/lib/muri.rb +4 -2
- data/muri.gemspec +8 -8
- data/test/error_test.rb +2 -2
- data/test/facebook_test.rb +30 -42
- data/test/flickr_test.rb +55 -55
- data/test/imageshack_test.rb +42 -38
- data/test/photobucket_test.rb +104 -123
- data/test/twitpic_test.rb +44 -25
- data/test/vimeo_test.rb +55 -55
- data/test/youtube_test.rb +76 -95
- metadata +16 -9
@@ -1,82 +1,94 @@
|
|
1
|
-
require 'cgi'
|
2
1
|
class Muri
|
3
2
|
module Filter
|
4
3
|
module Photobucket
|
5
4
|
|
5
|
+
private
|
6
6
|
PHOTOBUCKET_MEDIA = "media"
|
7
7
|
PHOTOBUCKET_ALBUM = "album"
|
8
8
|
PHOTOBUCKET_GROUP_ALBUM = "group_album"
|
9
9
|
|
10
|
+
REGEX_PHOTOBUCKET_IMAGE = /^\/albums\/(.+?)\/(?:(.*)\/)*(.+?)\.(.+?)$/i
|
11
|
+
REGEX_PHOTOBUCKET_ALBUM_OR_IMAGE = /^\/albums\/(.+?)\/(.[^\.]*?)\/?$/i
|
12
|
+
REGEX_PHOTOBUCKET_GROUP_IMAGE = /^\/groups\/(.+?)\/(.+?)\/(.+?)\.(.+)$/i
|
13
|
+
REGEX_PHOTOBUCKET_GROUP_ALBUM_OR_IMAGE = /^\/groups\/(\w+?)\/(\w+?)\/?$/i
|
14
|
+
|
10
15
|
def self.included(base)
|
11
16
|
base.class_eval do
|
12
17
|
self::PARSERS[Muri::Filter::Photobucket] = "photobucket_parse"
|
13
18
|
end
|
14
19
|
end
|
20
|
+
|
21
|
+
def self.parsable?(uri)
|
22
|
+
uri.host =~ /^([a-z0-9]*?[^(media)])\.photobucket\.com$/i
|
23
|
+
end
|
15
24
|
|
16
25
|
def photobucket_parse
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
@info[:media_id] = $3
|
47
|
-
@info[:content_type] = $4
|
48
|
-
url_common = "#{server_id}.photobucket.com/groups/#{group}/#{group_hash_value}"
|
49
|
-
direct_url_suffix = "#{url_common}/#{@info[:media_id]}.#{@info[:content_type]}"
|
50
|
-
@info[:media_api_type] = PHOTOBUCKET_MEDIA
|
51
|
-
@info[:media_url] = "http://gi#{direct_url_suffix}"
|
52
|
-
@info[:website] = "http://gs#{url_common}/?action=view¤t=#{@info[:media_id]}.#{@info[:content_type]}"
|
53
|
-
elsif @url.path =~ /^\/groups\/(\w+?)\/(\w+?)\/?$/i #Group Album
|
26
|
+
self.media_service = PHOTOBUCKET_SERVICE_NAME #'Photobucket'
|
27
|
+
|
28
|
+
self.uri.host =~ /^([a-z0-9]*?[^(media)])\.photobucket\.com$/i
|
29
|
+
self.media_server_id = $1.gsub(/([a-z]*)/i,"")
|
30
|
+
params = Muri.param_parse(self.uri.query)
|
31
|
+
|
32
|
+
if self.uri.path =~ REGEX_PHOTOBUCKET_IMAGE
|
33
|
+
self.media_id = $3
|
34
|
+
self.media_content_type = $4
|
35
|
+
photobucket_set_image_common($1, $2)
|
36
|
+
elsif self.uri.path =~ REGEX_PHOTOBUCKET_ALBUM_OR_IMAGE
|
37
|
+
pb_id = $1
|
38
|
+
album = $2
|
39
|
+
url_common = "#{self.media_server_id}.photobucket.com/albums/#{pb_id}/#{album}"
|
40
|
+
if (params["action"] =~ /^(view)$/i && params["current"] =~ /^(.+)\.([a-z0-9]+)$/i)
|
41
|
+
filename = params["current"].split(".")
|
42
|
+
self.media_id = filename.first
|
43
|
+
self.media_content_type = filename.last
|
44
|
+
photobucket_set_image_common(pb_id, album)
|
45
|
+
else
|
46
|
+
self.media_id = "#{album}"
|
47
|
+
self.media_api_type = PHOTOBUCKET_ALBUM
|
48
|
+
self.media_website = "http://s#{url_common}/"
|
49
|
+
end
|
50
|
+
elsif self.uri.path =~ REGEX_PHOTOBUCKET_GROUP_IMAGE
|
51
|
+
self.media_id = $3
|
52
|
+
self.media_content_type = $4
|
53
|
+
photobucket_set_group_image_common($1, $2)
|
54
|
+
elsif self.uri.path =~ REGEX_PHOTOBUCKET_GROUP_ALBUM_OR_IMAGE
|
54
55
|
group = $1
|
55
|
-
|
56
|
-
url_common = "#{
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
if self.valid?
|
63
|
-
if @info[:media_api_type] == PHOTOBUCKET_MEDIA
|
64
|
-
@info[:media_api_id] = @info[:media_url]
|
65
|
-
@info[:media_thumbnail] = "http://mobth#{direct_url_suffix}"
|
56
|
+
hash_value = $2
|
57
|
+
url_common = "#{self.media_server_id}.photobucket.com/groups/#{group}/#{hash_value}"
|
58
|
+
if (params["action"] =~ /^(view)$/i && params["current"] =~ /^(.+)\.([a-z0-9]+)$/i)
|
59
|
+
filename = params["current"].split(".")
|
60
|
+
self.media_id = filename.first
|
61
|
+
self.media_content_type = filename.last
|
62
|
+
photobucket_set_group_image_common(group, hash_value)
|
66
63
|
else
|
67
|
-
|
64
|
+
self.media_id = hash_value
|
65
|
+
self.media_website = "http://gs#{url_common}/"
|
66
|
+
self.media_api_type = PHOTOBUCKET_GROUP_ALBUM
|
68
67
|
end
|
69
68
|
else
|
70
|
-
raise UnsupportedURI
|
69
|
+
raise UnsupportedURI
|
71
70
|
end
|
72
|
-
|
73
|
-
self
|
74
|
-
end
|
75
|
-
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
|
71
|
+
|
72
|
+
self.media_api_id = self.is_photobucket_media? ? self.media_url : self.media_id
|
73
|
+
end
|
74
|
+
|
75
|
+
def photobucket_set_image_common(pb_id, album)
|
76
|
+
url_common = "#{self.media_server_id}.photobucket.com/albums/#{pb_id}/#{album}/"
|
77
|
+
url_suffix = "#{url_common}#{self.media_id}.#{self.media_content_type}"
|
78
|
+
self.media_api_type = PHOTOBUCKET_MEDIA
|
79
|
+
self.media_url = "http://i" + url_suffix
|
80
|
+
self.media_website = "http://s#{url_common}?action=view¤t=#{self.media_id}.#{self.media_content_type}"
|
81
|
+
self.media_thumbnail = "http://mobth#{url_suffix}"
|
82
|
+
end
|
83
|
+
|
84
|
+
def photobucket_set_group_image_common(group, hash_value)
|
85
|
+
url_common = "#{self.media_server_id}.photobucket.com/groups/#{group}/#{hash_value}"
|
86
|
+
url_suffix = "#{url_common}/#{self.media_id}.#{self.media_content_type}"
|
87
|
+
self.media_api_type = PHOTOBUCKET_MEDIA
|
88
|
+
self.media_url = "http://gi" + url_suffix
|
89
|
+
self.media_website = "http://gs#{url_common}/?action=view¤t=#{self.media_id}.#{self.media_content_type}"
|
90
|
+
self.media_thumbnail = "http://mobth#{url_suffix}"
|
91
|
+
end
|
80
92
|
end
|
81
93
|
end
|
82
94
|
end
|
data/lib/muri/filters/twitpic.rb
CHANGED
@@ -1,41 +1,39 @@
|
|
1
1
|
class Muri
|
2
2
|
module Filter
|
3
3
|
module Twitpic
|
4
|
-
|
4
|
+
|
5
|
+
private
|
5
6
|
TWITPIC_PHOTO = 'photo'
|
7
|
+
|
8
|
+
REGEX_TWITPIC_PHOTO = /^\/([a-z0-9]+)/i
|
6
9
|
|
7
10
|
def self.included(base)
|
8
11
|
base.class_eval do
|
9
12
|
self::PARSERS[Muri::Filter::Twitpic] = "twitpic_parse"
|
10
13
|
end
|
11
14
|
end
|
12
|
-
|
15
|
+
|
16
|
+
def self.parsable?(uri)
|
17
|
+
uri.host =~ /^twitpic\.com$/i
|
18
|
+
end
|
19
|
+
|
13
20
|
def twitpic_parse
|
14
|
-
|
21
|
+
self.media_service = TWITPIC_SERVICE_NAME #'Twitpic'
|
15
22
|
url_common = "http://twitpic.com"
|
16
|
-
|
17
|
-
if @url.path =~ /^\/([a-z0-9]+)/i
|
18
|
-
@info[:media_id] = $1
|
19
|
-
@info[:website] = "#{url_common}/#{@info[:media_id]}"
|
20
|
-
@info[:media_url] = "#{url_common}/show/large/#{@info[:media_id]}"
|
21
|
-
@info[:media_thumbnail] = "#{url_common}/show/thumb/#{@info[:media_id]}"
|
22
|
-
@info[:media_api_type] = TWITPIC_PHOTO
|
23
|
-
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
if self.uri.path =~ REGEX_TWITPIC_PHOTO
|
25
|
+
self.media_id = $1
|
26
|
+
self.media_website = "#{url_common}/#{self.media_id}"
|
27
|
+
self.media_url = "#{url_common}/show/large/#{self.media_id}"
|
28
|
+
self.media_thumbnail = "#{url_common}/show/thumb/#{self.media_id}"
|
29
|
+
self.media_api_type = TWITPIC_PHOTO
|
28
30
|
else
|
29
31
|
raise UnsupportedURI
|
30
32
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
def self.parsable?(uri)
|
36
|
-
uri.host =~ /^twitpic\.com$/i
|
33
|
+
|
34
|
+
# Twitpic does not have an API to pull photo info. Media ID is best guess
|
35
|
+
self.media_api_id = self.media_id
|
37
36
|
end
|
38
|
-
|
39
37
|
end
|
40
38
|
end
|
41
39
|
end
|
@@ -43,4 +41,4 @@ end
|
|
43
41
|
# http://twitpic.com/show/large/17d7th
|
44
42
|
# http://twitpic.com/show/thumb/17d7th
|
45
43
|
|
46
|
-
# http://twitpic.com/api.do
|
44
|
+
# http://twitpic.com/api.do
|
data/lib/muri/filters/vimeo.rb
CHANGED
@@ -1,54 +1,62 @@
|
|
1
|
-
require 'cgi'
|
2
1
|
class Muri
|
3
2
|
module Filter
|
4
3
|
module Vimeo
|
5
|
-
|
4
|
+
|
5
|
+
private
|
6
6
|
VIMEO_VIDEO = "video"
|
7
7
|
VIMEO_ALBUM = "album"
|
8
8
|
|
9
|
+
REGEX_VIMEO_VIDEO_OR_ALBUM = /^\/(album\/)?([0-9]+)\/?$/i
|
10
|
+
REGEX_VIMEO_GROUP_VIDEO = /^\/groups\/([0-9a-z\@\-\_]+)\/videos\/([0-9]+)\/?$/i
|
11
|
+
REGEX_VIMEO_SWF_VIDEO = /^\/moogaloop\.swf$/i
|
12
|
+
|
9
13
|
def self.included(base)
|
10
14
|
base.class_eval do
|
11
15
|
self::PARSERS[Muri::Filter::Vimeo] = "vimeo_parse"
|
12
16
|
end
|
13
17
|
end
|
14
|
-
|
18
|
+
|
19
|
+
def self.parsable?(uri)
|
20
|
+
uri.host =~ /^(www\.)?vimeo\.com$/i
|
21
|
+
end
|
22
|
+
|
15
23
|
def vimeo_parse
|
16
|
-
|
17
|
-
params =
|
18
|
-
|
19
|
-
if
|
20
|
-
|
21
|
-
|
22
|
-
elsif
|
23
|
-
|
24
|
-
|
25
|
-
elsif ((
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
if self.valid?
|
31
|
-
@info[:media_api_id] = @info[:media_id]
|
32
|
-
album = (@info[:media_api_type] == VIMEO_ALBUM) ? "album/" : ""
|
33
|
-
@info[:website] = "http://vimeo.com/#{album}#{@info[:media_id]}"
|
34
|
-
if @info[:media_api_type] == VIMEO_VIDEO
|
35
|
-
@info[:media_url] = "http://vimeo.com/moogaloop.swf?clip_id=#{@info[:media_id]}&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"
|
36
|
-
end
|
24
|
+
self.media_service = VIMEO_SERVICE_NAME #'Vimeo'
|
25
|
+
params = Muri.param_parse(self.uri.query)
|
26
|
+
|
27
|
+
if self.uri.path =~ REGEX_VIMEO_VIDEO_OR_ALBUM
|
28
|
+
self.media_id = $2
|
29
|
+
self.media_api_type = $1.nil? ? VIMEO_VIDEO : VIMEO_ALBUM
|
30
|
+
elsif self.uri.path =~ REGEX_VIMEO_GROUP_VIDEO
|
31
|
+
self.media_id = $2
|
32
|
+
self.media_api_type = VIMEO_VIDEO
|
33
|
+
elsif ((self.uri.path =~ REGEX_VIMEO_SWF_VIDEO) && (params["clip_id"] =~ /^([0-9]+)$/))
|
34
|
+
self.media_id = params["clip_id"]
|
35
|
+
self.media_api_type = VIMEO_VIDEO
|
37
36
|
else
|
38
37
|
raise UnsupportedURI
|
39
38
|
end
|
40
|
-
|
41
|
-
self
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
39
|
+
|
40
|
+
self.media_api_id = self.media_id
|
41
|
+
self.media_website = Filter::Vimeo.vimeo_media_website self #:api_type => self.media_api_type, :id => self.media_id
|
42
|
+
if self.is_vimeo_video?
|
43
|
+
self.media_url = Filter::Vimeo.vimeo_media_url self #:id => self.media_id
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.vimeo_media_url(obj)
|
48
|
+
"http://vimeo.com/moogaloop.swf?clip_id=#{obj.media_id}&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.vimeo_media_website(obj)
|
52
|
+
str = "http://vimeo.com/"
|
53
|
+
str += "album/" if obj.media_api_type == VIMEO_ALBUM
|
54
|
+
str += obj.media_id
|
46
55
|
end
|
47
|
-
|
48
56
|
end
|
49
57
|
end
|
50
58
|
end
|
51
59
|
# http://www.vimeo.com/groups/beyondthestill/videos/9394829
|
52
|
-
# http://vimeo.com/moogaloop.swf?clip_id=7312128&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"
|
60
|
+
# http://vimeo.com/moogaloop.swf?clip_id=7312128&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"
|
53
61
|
# http://vimeo.com/7312128
|
54
|
-
# http://vimeo.com/album/89702
|
62
|
+
# http://vimeo.com/album/89702
|
data/lib/muri/filters/youtube.rb
CHANGED
@@ -1,55 +1,58 @@
|
|
1
|
-
require 'cgi'
|
2
1
|
class Muri
|
3
2
|
module Filter
|
4
3
|
module Youtube
|
5
4
|
|
5
|
+
private
|
6
6
|
YOUTUBE_VIDEO = "video"
|
7
7
|
YOUTUBE_PLAYLIST = "playlist"
|
8
|
+
|
9
|
+
REGEX_YOUTUBE_VIDEO_WATCH = /^\/watch\/?$/i
|
10
|
+
REGEX_YOUTUBE_VIDEO_DIRECT = /\/v\/([a-z0-9\-\_]+)/i
|
11
|
+
REGEX_YOUTUBE_PLAYLIST_WATCH = /^\/view\_play\_list\/?$/i
|
12
|
+
REGEX_YOUTUBE_PLAYLIST_DIRECT = /^\/p\/([a-z0-9\-\_]+)/i
|
8
13
|
|
9
14
|
def self.included(base)
|
10
|
-
base.class_eval do
|
15
|
+
base.class_eval do
|
11
16
|
self::PARSERS[Muri::Filter::Youtube] = "youtube_parse"
|
12
17
|
end
|
13
18
|
end
|
14
|
-
|
19
|
+
|
20
|
+
def self.parsable?(uri)
|
21
|
+
uri.host =~ /^(www\.)?youtube\.com$/i
|
22
|
+
end
|
23
|
+
|
15
24
|
def youtube_parse
|
16
|
-
|
17
|
-
url_common = "http://www.youtube.com"
|
18
|
-
params = @url.query.nil? ? {} : CGI::parse(@url.query)#.each {|k,v| b[k] = v.first}
|
19
|
-
|
20
|
-
if (@url.path =~ /^\/watch$/i) && params.include?("v")
|
21
|
-
@info[:media_id] = params["v"].first
|
22
|
-
@info[:media_api_type] = YOUTUBE_VIDEO
|
23
|
-
elsif (@url.path =~ /\/v\/([a-z0-9\-\_]+)/i)
|
24
|
-
@info[:media_id] = $1
|
25
|
-
@info[:media_api_type] = YOUTUBE_VIDEO
|
26
|
-
elsif (@url.path =~ /^\/p\/([a-z0-9\-\_]+)/i)
|
27
|
-
@info[:media_id] = $1
|
28
|
-
@info[:media_api_type] = YOUTUBE_PLAYLIST
|
29
|
-
elsif (@url.path =~ /^\/view\_play\_list$/i) && (params.include?('p'))
|
30
|
-
@info[:media_id] = params['p'].first
|
31
|
-
@info[:media_api_type] = YOUTUBE_PLAYLIST
|
32
|
-
end
|
25
|
+
self.media_service = YOUTUBE_SERVICE_NAME #'Youtube'
|
33
26
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
27
|
+
url_common = "http://www.youtube.com"
|
28
|
+
params = Muri.param_parse(self.uri.query)
|
29
|
+
|
30
|
+
if (self.uri.path =~ REGEX_YOUTUBE_VIDEO_WATCH) && params['v']
|
31
|
+
self.media_id = params['v']
|
32
|
+
self.media_api_type = YOUTUBE_VIDEO
|
33
|
+
elsif (self.uri.path =~ REGEX_YOUTUBE_VIDEO_DIRECT)
|
34
|
+
self.media_id = $1
|
35
|
+
self.media_api_type = YOUTUBE_VIDEO
|
36
|
+
elsif (self.uri.path =~ REGEX_YOUTUBE_PLAYLIST_DIRECT)
|
37
|
+
self.media_id = $1
|
38
|
+
self.media_api_type = YOUTUBE_PLAYLIST
|
39
|
+
elsif (self.uri.path =~ REGEX_YOUTUBE_PLAYLIST_WATCH) && (params['p'])
|
40
|
+
self.media_id = params['p']
|
41
|
+
self.media_api_type = YOUTUBE_PLAYLIST
|
44
42
|
else
|
45
43
|
raise UnsupportedURI
|
46
44
|
end
|
47
|
-
|
48
|
-
self
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
45
|
+
|
46
|
+
self.media_api_id = self.media_id
|
47
|
+
if self.is_youtube_video?
|
48
|
+
self.media_website = "#{url_common}/watch?v=#{self.media_id}"
|
49
|
+
self.media_url = "#{url_common}/v/#{self.media_id}"
|
50
|
+
self.media_thumbnail = "http://i.ytimg.com/vi/#{self.media_id}/default.jpg"
|
51
|
+
elsif self.is_youtube_playlist?
|
52
|
+
self.media_website = "#{url_common}/view_play_list?p=#{self.media_id}"
|
53
|
+
self.media_url = "#{url_common}/p/#{self.media_id}"
|
54
|
+
end
|
55
|
+
end
|
53
56
|
end
|
54
57
|
end
|
55
58
|
end
|
data/lib/muri.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'cgi'
|
3
|
+
|
1
4
|
# Register built-in filters
|
2
5
|
Dir["#{File.dirname(__FILE__) + '/muri/filters'}/**/*"].each do |filter|
|
3
6
|
require "#{filter}"
|
4
7
|
end
|
5
8
|
|
6
9
|
# Just base now..more later(?)
|
7
|
-
%w(base).each do |f|
|
10
|
+
%w(filter base).each do |f|
|
8
11
|
require File.dirname(__FILE__) + "/muri/#{f}"
|
9
12
|
end
|
10
|
-
|
data/muri.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{muri}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "1.0.0"
|
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-03-
|
12
|
+
s.date = %q{2010-03-28}
|
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 = [
|
@@ -43,16 +43,16 @@ Gem::Specification.new do |s|
|
|
43
43
|
s.homepage = %q{http://github.com/bananastalktome/muri/}
|
44
44
|
s.rdoc_options = ["--charset=UTF-8"]
|
45
45
|
s.require_paths = ["lib"]
|
46
|
-
s.rubygems_version = %q{1.3.
|
46
|
+
s.rubygems_version = %q{1.3.6}
|
47
47
|
s.summary = %q{Media URI Parser}
|
48
48
|
s.test_files = [
|
49
|
-
"test/
|
50
|
-
"test/facebook_test.rb",
|
51
|
-
"test/flickr_test.rb",
|
52
|
-
"test/imageshack_test.rb",
|
53
|
-
"test/photobucket_test.rb",
|
49
|
+
"test/facebook_test.rb",
|
54
50
|
"test/twitpic_test.rb",
|
51
|
+
"test/photobucket_test.rb",
|
55
52
|
"test/vimeo_test.rb",
|
53
|
+
"test/imageshack_test.rb",
|
54
|
+
"test/error_test.rb",
|
55
|
+
"test/flickr_test.rb",
|
56
56
|
"test/youtube_test.rb"
|
57
57
|
]
|
58
58
|
|
data/test/error_test.rb
CHANGED
@@ -29,13 +29,13 @@ describe "Parse Errors" do
|
|
29
29
|
it "#{b} should return UnsupportedURI" do
|
30
30
|
#lambda { Muri.parse b }.should raise_exception(Muri::UnsupportedURI)
|
31
31
|
m = Muri.parse b
|
32
|
-
m.valid?.should == false
|
32
|
+
#m.valid?.should == false
|
33
33
|
m.errors.should == "Muri::UnsupportedURI"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should not bomb if no URI is provided" do
|
38
|
-
lambda { Muri.parse
|
38
|
+
lambda { Muri.parse nil }.should_not raise_exception()
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
data/test/facebook_test.rb
CHANGED
@@ -2,13 +2,14 @@ require 'lib/muri.rb'
|
|
2
2
|
|
3
3
|
shared_examples_for "Facebook parse" do
|
4
4
|
it "should be Facebook service" do
|
5
|
-
@a.
|
5
|
+
@a.media_service.should == 'Facebook'
|
6
6
|
end
|
7
7
|
|
8
8
|
it "should be valid" do
|
9
9
|
@a.valid?.should == true
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
12
13
|
shared_examples_for "Facebook parse photo" do
|
13
14
|
it_should_behave_like "Facebook parse"
|
14
15
|
it "should have media api type = FACEBOOK_PHOTO" do
|
@@ -16,47 +17,34 @@ shared_examples_for "Facebook parse photo" do
|
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
# it_should_behave_like "Facebook parse video"
|
31
|
-
#
|
32
|
-
# it "should have media id" do
|
33
|
-
# @a.media_id.should == '614695029223'
|
34
|
-
# end
|
35
|
-
#
|
36
|
-
# it "should have a media_url" do
|
37
|
-
# @a.media_url.should == 'http://www.facebook.com/v/614695029223'
|
38
|
-
# end
|
39
|
-
#
|
40
|
-
# it "should have media api id" do
|
41
|
-
# @a.media_api_id.should == '614695029223'
|
42
|
-
# end
|
43
|
-
# end
|
44
|
-
|
45
|
-
describe "Facebook parse second" do
|
46
|
-
before(:all) do
|
47
|
-
@a = Muri.parse 'http://www.facebook.com/photo.php?pid=34929102&l=a1abf8cd37&id=15201063'
|
48
|
-
end
|
49
|
-
it_should_behave_like "Facebook parse photo"
|
50
|
-
|
51
|
-
it "should have media id" do
|
52
|
-
@a.media_id.should == '34929102'
|
53
|
-
end
|
20
|
+
{'http://www.facebook.com/photo.php?pid=34929102&l=a1abf8cd37&id=15201063' =>
|
21
|
+
{ :media_id => '34929102',
|
22
|
+
:media_website => 'http://www.facebook.com/photo.php?pid=34929102&l=a1abf8cd37&id=15201063',
|
23
|
+
:media_api_id => 65288068484364750
|
24
|
+
}
|
25
|
+
}.each do |url, values|
|
26
|
+
describe "Facebook parse #{url}" do
|
27
|
+
before(:all) do
|
28
|
+
@a = Muri.parse url
|
29
|
+
end
|
30
|
+
it_should_behave_like "Facebook parse photo"
|
54
31
|
|
55
|
-
|
56
|
-
|
32
|
+
if values[:media_id]
|
33
|
+
it "should have media id" do
|
34
|
+
@a.media_id.should == values[:media_id]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if values[:media_website]
|
39
|
+
it "should have a website" do
|
40
|
+
@a.media_website.should == values[:media_website]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
if values[:media_api_id]
|
45
|
+
it "should have media api id" do
|
46
|
+
@a.media_api_id.should == values[:media_api_id]
|
47
|
+
end
|
48
|
+
end
|
57
49
|
end
|
58
|
-
|
59
|
-
it "should have media api id" do
|
60
|
-
@a.media_api_id.should == 65288068484364750
|
61
|
-
end
|
62
50
|
end
|