aboutsummaryrefslogtreecommitdiffstats
path: root/longify/longify-urls.pl
diff options
context:
space:
mode:
authorTom Feist <shabble@metavore.org>2011-07-08 10:12:13 +0000
committerTom Feist <shabble@metavore.org>2011-07-08 10:12:13 +0000
commit8e8d2111bb23dcc1aa4998e4577950a1ef327196 (patch)
tree3dd28bb7e879441fad391dd8e2edd4b385f42ffa /longify/longify-urls.pl
parentadded list of shortener domains scraped from http://bazaar.launchpad.net/~sea... (diff)
downloadirssi-scripts-8e8d2111bb23dcc1aa4998e4577950a1ef327196.tar.gz
irssi-scripts-8e8d2111bb23dcc1aa4998e4577950a1ef327196.zip
load the shorteners list, and check it against the host part of any URIs before
attempting a query. Also /longify-reload command to reload list from file.
Diffstat (limited to 'longify/longify-urls.pl')
-rw-r--r--longify/longify-urls.pl33
1 files changed, 29 insertions, 4 deletions
diff --git a/longify/longify-urls.pl b/longify/longify-urls.pl
index b294918..69d7f94 100644
--- a/longify/longify-urls.pl
+++ b/longify/longify-urls.pl
@@ -84,6 +84,7 @@ use Data::Dumper;
use IrssiX::Async qw(fork_off);
use LWP::UserAgent;
+use URI;
our $VERSION = '0.1';
our %IRSSI = (
@@ -99,6 +100,8 @@ our %IRSSI = (
my $pending_msg_params = {};
my $lookup_in_progress;
my $flushing_message;
+my $domains;
+
sub sig_public_message {
my ($server, $msg, @rest) = @_;
@@ -113,7 +116,9 @@ sub sig_public_message {
return unless $url;
+ my $uri_obj = URI->new($url);
+ return unless ref($uri_obj) && exists $domains->{$uri_obj->host};
$pending_msg_params->{$url} = [@_];
$lookup_in_progress = 1;
@@ -140,8 +145,8 @@ sub expand_url_request {
my $user_agent = LWP::UserAgent->new;
$user_agent->agent("irssi-longify-urls/0.1 ");
$user_agent->timeout(2); # TODO: make this a setting.
-
- my $request = HTTP::Request->new(HEAD => $url);
+ $user_agent->max_size(0);
+ my $request = HTTP::Request->new(GET => $url);
my $result = $user_agent->request($request);
print "$url\n";
@@ -169,11 +174,11 @@ sub expand_url_callback {
my $pending_message_data = $pending_msg_params->{$orig_url};
my @new_signal = @$pending_message_data;
- Irssi::print("Result: orignal: $orig_url, new: $long_url");
+ #Irssi::print("Result: orignal: $orig_url, new: $long_url");
if ($long_url && $long_url !~ /^ERROR/ && $long_url ne $orig_url) {
$new_signal[1] =~ s/\Q$orig_url\E/$long_url [was: $orig_url]/;
- print "Printing with: " . Dumper(@new_signal[1..$#new_signal]);
+ #print "Printing with: " . Dumper(@new_signal[1..$#new_signal]);
} elsif ($long_url && $long_url =~ /^ERROR/) {
$new_signal[1] =~ s/\Q$orig_url\E/$long_url while expanding "$orig_url"/;
}
@@ -227,10 +232,30 @@ sub match_uri {
}
}
+sub cmd_reload {
+ my $filename = shift || Irssi::get_irssi_dir . '/longify-urls.list';
+ $domains = {};
+ open my $fh, '<', $filename
+ or die "Couldn't open file containing shorteners list $filename: $!";
+ while (<$fh>) {
+ chomp;
+ $domains->{$_} = 1;
+ }
+ close $fh;
+ Irssi::active_win->print('%_Longify:%_ List of domains has been reloaded.');
+}
+
sub init {
Irssi::signal_add_first 'message public', \&sig_public_message;
Irssi::signal_add_first 'message private', \&sig_private_message;
+ Irssi::signal_add 'setup changed', \&sig_setup_changed;
+ Irssi::command_bind 'longify-reload', \&cmd_reload;
+
+ cmd_reload();
}
+sub sig_setup_changed {
+ # TODO: settings updating stuff goes here.
+}
init();