muri 0.0.13 → 1.0.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.
@@ -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
- @info[:service] = 'Photobucket'
18
-
19
- @url.host =~ /^([a-z0-9]*?[^(media)])\.photobucket\.com$/i
20
- @info[:server_id] = $1.gsub(/([a-z]*)/i,"")
21
-
22
- if @url.path =~ /^\/albums\/(.+?)\/(.+?)\/(?:(.*)\/)*(.+?)\.(.+?)$/i #Images
23
- # OLD: /^\/albums\/(.+?)\/(.+?)\/((?:.+?\/)*)(.+?)\.(.+)/i
24
- photobucket_id = $1
25
- media_creator = $2
26
- album = $3.nil? ? '' : "#{$3}/"
27
- @info[:media_id] = $4
28
- @info[:content_type] = $5
29
- url_common = "#{server_id}.photobucket.com/albums/#{photobucket_id}/#{media_creator}/#{album}"
30
- direct_url_suffix = "#{url_common}#{@info[:media_id]}.#{@info[:content_type]}"
31
- @info[:media_api_type] = PHOTOBUCKET_MEDIA
32
- @info[:media_url] = "http://i#{direct_url_suffix}"
33
- @info[:website] = "http://s#{url_common}?action=view&current=#{@info[:media_id]}.#{@info[:content_type]}"
34
- elsif @url.path =~ /^\/albums\/(.+?)\/(.+?)\/(.[^\.]*?)\/?$/i #Albums
35
- # OLD: /^\/albums\/(.+?)\/(.+?)\/((?:.[^\/]+?)+)(?:\/|$)/i
36
- photobucket_id = $1
37
- media_creator = $2
38
- album = $3
39
- @info[:media_id] = "#{media_creator}/#{album}"
40
- url_common = "#{server_id}.photobucket.com/albums/#{photobucket_id}/#{media_creator}/#{album}"
41
- @info[:media_api_type] = PHOTOBUCKET_ALBUM
42
- @info[:website] = "http://s#{url_common}/"
43
- elsif @url.path =~ /^\/groups\/(.+?)\/(.+?)\/(.+?)\.(.+)$/i #Group Images
44
- group = $1
45
- group_hash_value = $2
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&current=#{@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
- group_hash_value = $2
56
- url_common = "#{server_id}.photobucket.com/groups/#{group}/#{group_hash_value}"
57
- @info[:media_id] = group_hash_value
58
- @info[:website] = "http://gs#{url_common}/"
59
- @info[:media_api_type] = PHOTOBUCKET_GROUP_ALBUM
60
- end
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
- @info[:media_api_id] = @info[:media_id]
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 self.parsable?(uri)
77
- uri.host =~ /^([a-z0-9]*?[^(media)])\.photobucket\.com$/i
78
- end
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&current=#{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&current=#{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
@@ -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
- @info[:service] = 'Twitpic'
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
- # Twitpic does not have an API to pull photo info. Media ID is best guess
26
- if self.valid?
27
- @info[:media_api_id] = @info[:media_id]
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
- self
33
- end
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
@@ -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
- @info[:service] = 'Vimeo'
17
- params = @url.query.nil? ? {} : CGI::parse(@url.query)#.each {|k,v| b[k] = v.first}
18
-
19
- if @url.path =~ /^\/(album\/)?([0-9]+)\/?$/i
20
- @info[:media_id] = $2
21
- @info[:media_api_type] = $1.nil? ? VIMEO_VIDEO : VIMEO_ALBUM
22
- elsif @url.path =~ /^\/groups\/([0-9a-z\@\-\_]+)\/videos\/([0-9]+)\/?$/i
23
- @info[:media_id] = $2
24
- @info[:media_api_type] = VIMEO_VIDEO
25
- elsif ((@url.path =~ /^\/moogaloop\.swf$/i) && (params.include?("clip_id")) && (params["clip_id"].first =~ /^([0-9]+)$/))
26
- @info[:media_id] = params["clip_id"].first
27
- @info[:media_api_type] = VIMEO_VIDEO
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
- end
43
-
44
- def self.parsable?(uri)
45
- uri.host =~ /^(www\.)?vimeo\.com$/i
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
@@ -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
- @info[:service] = 'Youtube'
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
- if self.valid?
35
- if @info[:media_api_type] == YOUTUBE_VIDEO
36
- @info[:website] = "#{url_common}/watch?v=#{@info[:media_id]}"
37
- @info[:media_url] = "#{url_common}/v/#{@info[:media_id]}"
38
- @info[:media_thumbnail] = "http://i.ytimg.com/vi/#{@info[:media_id]}/default.jpg"
39
- elsif @info[:media_api_type] == YOUTUBE_PLAYLIST
40
- @info[:website] = "#{url_common}/view_play_list?p=#{@info[:media_id]}"
41
- @info[:media_url] = "#{url_common}/p/#{@info[:media_id]}"
42
- end
43
- @info[:media_api_id] = @info[:media_id]
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
- end
50
- def self.parsable?(uri)
51
- uri.host =~ /^(www\.)?youtube\.com$/i
52
- end
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.13"
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-23}
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.5}
46
+ s.rubygems_version = %q{1.3.6}
47
47
  s.summary = %q{Media URI Parser}
48
48
  s.test_files = [
49
- "test/error_test.rb",
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 '' }.should_not raise_exception()
38
+ lambda { Muri.parse nil }.should_not raise_exception()
39
39
  end
40
40
 
41
41
  end
@@ -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.service.should == 'Facebook'
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
- # shared_examples_for "Facebook parse video" do
20
- # it_should_behave_like "Facebook parse"
21
- # it "should have media api type = FACEBOOK_VIDEO" do
22
- # @a.media_api_type.should == Muri::FACEBOOK_VIDEO
23
- # end
24
- # end
25
-
26
- # describe "Facebook parse first" do
27
- # before(:all) do
28
- # @a = Muri.parse 'http://www.facebook.com/v/614695029223'
29
- # end
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
- it "should have a website" do
56
- @a.website.should == 'http://www.facebook.com/photo.php?pid=34929102&l=a1abf8cd37&id=15201063'
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