#!/usr/bin/env ruby
# -*-mode: ruby; coding: utf-8;-*-
# (C) Thomas Hafner 2011
#
gopher://sdf-eu.org/1/users/hafner/devel/tinyurl/
$-K='U'
require 'cgi'
require 'mechanize'
module Tinyurl
def self.encode(original_url)
raise 'No original URL given.' unless original_url
Mechanize.new.
get("
http://tinyurl.com/create.php?url=#{CGI::escape(original_url)}").
link_with(:text => 'Open in new window').
href
end
def self.decode(tiny_url)
raise 'No tiny URL given.' unless tiny_url
url = tiny_url.sub(%r{^
http://tinyurl.com/}i, '
http://preview.tinyurl.com/')
Mechanize.new.
get(url).
link_with(:text => 'Proceed to this site.').
href
end
end
if __FILE__ == $0
require 'getoptlong'
options = \
[ [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--decode', '-d', GetoptLong::NO_ARGUMENT ],
]
OPTS = Hash[*GetoptLong.new(*options).to_enum.to_a.flatten]
if OPTS.has_key?('--help')
b = File::basename($0)
puts <<"EOS"
Usage:
#{b} ORIGINAL_URL
#{b} --decode TINY_URL
EOS
else
url, = ARGV
method = OPTS.has_key?('--decode') ? :decode : :encode
puts Tinyurl.send(method, url)
end
end