From f6afc5b8353ba1c6f02c6d5c20072d5264019d96 Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 16:12:38 +0100 Subject: [PATCH] Subclass Net::Twitter so it does the authentication. --- lib/TwittElection/Twitter.pm | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/TwittElection/Twitter.pm diff --git a/lib/TwittElection/Twitter.pm b/lib/TwittElection/Twitter.pm new file mode 100644 index 0000000000..cb5aa929a0 --- /dev/null +++ b/lib/TwittElection/Twitter.pm @@ -0,0 +1,45 @@ +package TwittElection::Twitter; + +use Moose; +extends 'Net::Twitter'; + +sub authorise { + my $self = shift; + + my($access_token, $access_token_secret) = restore_tokens(); + + if ($access_token && $access_token_secret) { + $self->access_token($access_token); + $self->access_token_secret($access_token_secret); + } + + unless ( $self->authorized ) { + # The client is not yet authorized: Do it now + print "Authorize this app at ", $self->get_authorization_url, + " and enter the PIN#\n"; + + my $pin = ; # wait for input + chomp $pin; + + my($access_token, $access_token_secret, $user_id, $screen_name) = + $self->request_access_token(verifier => $pin); + save_tokens($access_token, $access_token_secret); # if necessary + } +} + +sub save_tokens { + my ($access_token, $access_token_secret) = @_; + + open my $tw_fh, '>', '.te_tokens' or die $!; + print $tw_fh "$access_token $access_token_secret"; +} + +sub restore_tokens { + open my $tw_fh, '<', '.te_tokens' or die $!; + + my $tokens = <$tw_fh>; + + return split / /, $tokens; +} + +1; \ No newline at end of file