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.
- 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
         
     |