== LongURL LongURL expands short urls (tinyurl, is.gd, ...) to original ones, using on LongURL.org, internal resolution or direct resolution First, expand will try to expand url using longurl.org service. Then, it will try to direct follow redirections on the given url and returns final one. === Options * <tt>:cache</tt> : cache object to use, must implement [] and []= functions. === Types <tt>url</tt> is expected to be a String and returns a String with the url. === Examples # simple expands LongURL.expand("http://tinyurl.com/1c2") # => "http://www.google.com" LongURL.expand("http://tinyurl.com/blnhsg") # => "http://www.google.com/search?q=number+of+horns+on+a+unicorn&ie=UTF-8" LongURL.expand("http://is.gd/iUKg") # => "http://fabien.jakimowicz.com" # not expandable urls, without any http call LongURL.expand("http://www.linuxfr.org") # => "http://www.linuxfr.org" # Use MemCache LongURL.expand("http://is.gd/iUKg", :cache => MemCache.new("localhost:11211", :namespace => "LongURL")) # => "http://fabien.jakimowicz.com" # Expander class expander = LongURL::Expander.new expander.expand("http://tinyurl.com/1c2") # => "http://www.google.com" # not expandable urls, direct resolution only expander.direct_resolution("http://www.linuxfr.org") # => "http://www.linuxfr.org/pub" # not expandable urls, calling longurl.org only expander.expand_with_service_only("http://www.linuxfr.org") # => "http://www.linuxfr.org/pub" # ... with MemCache expander = LongURL::Expander.new(:cache => MemCache.new("localhost:11211", :namespace => "LongURL")) expander.expand("http://tinyurl.com/1c2") # => "http://www.google.com" === Exceptions * LongURL::InvalidURL : will occurs if given url is nil, empty or invalid * LongURL::NetworkError : a network (timeout, host could be reached, ...) error occurs * LongURL::UnknownError : an unknown error occurs