lib/muri/base.rb in muri-1.1.0 vs lib/muri/base.rb in muri-1.1.1
- old
+ new
@@ -7,23 +7,25 @@
# UnsupportedURI raised if parser is found, but URI path does not
# match accepted formats
class UnsupportedURI < ArgumentError; end
- PARSERS = { }
+ AVAILABLE_PARSERS = %w[Youtube Flickr Vimeo Imageshack Photobucket Facebook Twitpic Picasa].freeze
- # Defines is_#{service}? and is_#{service type constant}? methods, and sets service name constnat
- ['Youtube', 'Flickr', 'Vimeo', 'Imageshack', 'Photobucket', 'Facebook', 'Twitpic', 'Picasa'].each do |filter|
- eval "include Filter::#{filter}"
- is_service = "is_#{filter.downcase}?"
- define_method(is_service) { self.media_service == filter }
- self.constants.reject { |c| c !~ /^#{filter.upcase}/ }.each do |exp|
+ PARSERS = { }
+
+ # Defines is_#{service}? and is_#{service type}? methods, and sets service name constnat
+ AVAILABLE_PARSERS.each do |parser|
+ eval "include Filter::#{parser}"
+ is_service = "is_#{parser.downcase}?"
+ define_method(is_service) { self.media_service == parser }
+ self.constants.reject { |c| c !~ /^#{parser.upcase}/ }.each do |exp|
define_method("is_#{exp.downcase}?") do
self.media_api_type == eval(exp) && self.instance_eval(is_service)
end
end
- const_set "#{filter.upcase}_SERVICE_NAME", "#{filter}"
+ const_set "#{parser.upcase}_SERVICE_NAME", "#{parser}"
end
def self.parse(url)
self.new(url)
end
@@ -33,11 +35,11 @@
PARSERS.keys
end
def initialize(url)
@info = { }
- _parse(url)
+ parse(url)
end
# Determine if Muri object is valid (errors mean not valid)
def valid?
self.errors.nil?
@@ -57,11 +59,12 @@
def self.determine_feed_parser(uri)
PARSERS.keys.detect {|klass| klass.parsable?(uri)}
end
- def _parse(raw_url)
+ def parse(raw_url)
begin
+ raw_url = URI.encode(URI.decode(raw_url)) unless raw_url.nil?
self.uri = URI.parse(raw_url)
if self.uri.scheme.nil?
raw_url = "http://#{raw_url}"
self.uri = URI.parse(raw_url)
end