package WWW::Shorten::Shorl;
use 5.006;
use strict;
use warnings;
use base qw( WWW::Shorten::generic Exporter );
our @EXPORT = qw(makeashorterlink makealongerlink);
our $VERSION = "1.81";
use Carp;
sub makeashorterlink ($)
{
my $url = shift or croak 'No URL passed to makeashorterlink';
my $ua = __PACKAGE__->ua();
my $shorl = 'http://shorl.com/create.php';
my $resp = $ua->post($shorl, [ url => $url ]);
return unless $resp->is_success;
if ($resp->content =~ m!
\QShorl:\E
\s+
(\Qhttp://shorl.com/\E\w+)
[\r\n\s]*
\QPassword:\E
\s+
(\w+)
!x) {
return wantarray ? ($1, $2) : $1;
}
return;
}
sub makealongerlink ($)
{
my $shorl_url = shift
or croak 'No Shorl key / URL passed to makealongerlink';
my $ua = __PACKAGE__->ua();
$shorl_url = "http://shorl.com/$shorl_url"
unless $shorl_url =~ m!^http://!i;
my $resp = $ua->get($shorl_url);
return undef unless $resp->is_redirect;
my $url = $resp->header('Location');
return $url;
}
1;
__END__
=head1 NAME
WWW::Shorten::Shorl - Perl interface to shorl.com
=head1 SYNOPSIS
use WWW::Shorten::Shorl;
use WWW::Shorten 'Shorl';
$short_url = makeashorterlink($long_url);
($short_url,$password) = makeashorterlink($long_url);
$long_url = makealongerlink($short_url);
=head1 DESCRIPTION
A Perl interface to the web site shorl.com. Shorl simply maintains
a database of long URLs, each of which has a unique identifier.
The function C will call the Shorl web site passing it
your long URL and will return the shorter Shorl version. If used in a
list context, then it will return both the Shorl URL and the password.
The function C does the reverse. C
will accept as an argument either the full Shorl URL or just the
Shorl identifier.
If anything goes wrong, then either function will return C.
Note that Shorl, unlike TinyURL and MakeAShorterLink, returns a unique code for every submission.
=head2 EXPORT
makeashorterlink, makealongerlink
=head1 SUPPORT, LICENCE, THANKS and SUCH
See the main L docs.
=head1 AUTHOR
Iain Truskett
Based on WWW::MakeAShorterLink by Dave Cross
=head1 SEE ALSO
L, L, L
=cut