use Data::Dumper;
use Encode;
use POSIX qw/:sys_wait_h/;
+use Net::Twitter qw/3.05/;
$Data::Dumper::Indent = 1;
use vars qw($VERSION %IRSSI);
-$VERSION = "2.4.0beta";
+$VERSION = "2.4.1beta";
%IRSSI = (
authors => 'Dan Boger',
contact => 'zigdon@gmail.com',
. 'Can optionally set your bitlbee /away message to same',
license => 'GNU GPL v2',
url => 'http://twirssi.com',
- changed => '$Date: 2009-08-07 01:24:53 -0700 (Fri, 07 Aug 2009) $',
+ changed => 'Fri Jan 22 14:40:48 PST 2010',
);
my $window;
return unless $data = &valid_username($data);
¬ice("Logging out $data...");
- $twits{$data}->end_session();
+ eval {
+ $twits{$data}->end_session();
+ };
delete $twits{$data};
undef $twit;
if ( keys %twits ) {
}
$defservice = $service = ucfirst lc $service;
- print "Loading Net::$service" if &debug;
- eval "use Net::$service 3.05";
- if ($@) {
- ¬ice(
- "Failed to load Net::$service when trying to log in as $user: $@");
- return;
- }
-
- if ( Irssi::settings_get_bool("twirssi_use_oauth") ) {
+ if ( $service eq 'Twitter' and
+ Irssi::settings_get_bool("twirssi_use_oauth") ) {
print "Attempting OAuth for $user\@$service" if &debug;
eval {
- $twit = "Net::$service"->new(
+ $twit = Net::Twitter->new(
+ $service eq 'Identica' ? ( identica => 1 ) : (),
traits => [ 'API::REST', 'OAuth' ],
consumer_key => 'BZVAvBma4GxdiRwXIvbnw',
consumer_secret => '0T5kahwLyb34vciGZsgkA9lsjtGCQ05vxVE2APXM',
}
unless ( $twit->authorized ) {
+ my $url;
+ eval {
+ $url = $twit->get_authorization_url;
+ };
+
+ if ($@) {
+ ¬ice("ERROR: Failed to get OAuth authorization_url. Try again later.");
+ return;
+ }
+
¬ice("Twirssi not autorized to access $service for $user.");
¬ice("Please authorize at the following url, then enter the pin ");
- ¬ice("supplied with /twirssi_oath $user\@$service <pin>");
- ¬ice($twit->get_authorization_url);
+ ¬ice("supplied with /twirssi_oauth $user\@$service <pin>");
+ ¬ice($url);
$oauth{pending}{"$user\@$service"} = $twit;
return;
}
}
} else {
- $twit = "Net::$service"->new(
+ $twit = Net::Twitter->new(
+ $service eq 'Identica' ? ( identica => 1 ) : (),
username => $user,
password => $pass,
source => "twirssi",
}
unless ($twit) {
- ¬ice("Failed to create Net::$service object! Aborting.");
+ ¬ice("Failed to create object! Aborting.");
return;
}
my $store_file = Irssi::settings_get_str("twirssi_oauth_store");
if ($store_file) {
- my %store;
+ my @store;
if ( open( OAUTH, $store_file ) ) {
while (<OAUTH>) {
chomp;
- my ( $k, $v ) = split ' ', 2;
- $store{$k} = $v;
+ next if /$key/i;
+ push @store, $_;
}
close OAUTH;
}
- $store{$key} = "$access_token $access_token_secret";
+ push @store, "$key $access_token $access_token_secret";
if ( open( OAUTH, ">$store_file.new" ) ) {
- print OAUTH "$_ $store{$_}\n" foreach keys %store;
+ print OAUTH "$_\n" foreach @store;
close OAUTH;
rename "$store_file.new", $store_file
or ¬ice("Failed to rename $store_file.new: $!");
sub do_updates {
my ( $fh, $username, $obj, $cache ) = @_;
- my $rate_limit = $obj->rate_limit_status();
- if ( $rate_limit and $rate_limit->{remaining_hits} < 1 ) {
- ¬ice("Rate limit exceeded for $username");
- return undef;
- }
+ eval {
+ my $rate_limit = $obj->rate_limit_status();
+ if ( $rate_limit and $rate_limit->{remaining_hits} < 1 ) {
+ ¬ice("Rate limit exceeded for $username");
+ return undef;
+ }
+ };
print scalar localtime, " - Polling for updates for $username" if &debug;
my $tweets;
}
}
- if ( my $autouser = Irssi::settings_get_str("twitter_usernames")
- and my $autopass = Irssi::settings_get_str("twitter_passwords") )
- {
+ if ( my $autouser = Irssi::settings_get_str("twitter_usernames") ) {
&cmd_login();
&get_updates;
}