/usr/local/CPAN/Bot-BasicBot-Pluggable-Module-Tools/Bot/BasicBot/Pluggable/Module/LongURLs.pm
package Bot::BasicBot::Pluggable::Module::LongURLs;
use Bot::BasicBot::Pluggable::Module;
use base qw(Bot::BasicBot::Pluggable::Module);
use warnings;
use strict;
require WWW::Shorten;
sub help {
my ($self, $mess) = @_;
return "I hate long URLs.";
}
sub init {
my $self = shift;
$self->set("user_max_length", 100) unless defined($self->get("user_max_length"));
$self->set("user_shorten_service", 'Metamark') unless defined($self->get("user_shorten_service"));
}
sub said {
my ($self, $mess, $pri) = @_;
return unless ($pri == 0);
my $service = $self->get("user_shorten_service");
if (!defined $self->{_old_service} || $self->{_old_service} ne $service)
{
no warnings 'redefine';
eval { WWW::Shorten->import($service); };
if ($@) {
$self->{Bot}->reply($mess, "Trying to use $service didn't work: $@");
$self->{_old_service} = undef;
return;
}
$self->{_old_service} = $service;
}
my $body = $mess->{body};
return unless defined $body;
return if $body =~ /phobos.apple.com/;
return unless $body =~ m!(http://\S+)!;
return unless length($1) > $self->get("user_max_length");
my $long = $1;
my $short = $long;
unless ($short =~ s!a\d+.\w.akamai\w*.net/\w+/\w+/\w+/\w+/!!) {
$short = makeashorterlink($long) or return;
}
return unless length($short) < length($long);
return unless $short;
$self->{Bot}->reply($mess, "urgh. long url. Try $short");
}
1;