aboutsummaryrefslogtreecommitdiffstats
path: root/lib/WWW/StrawViewer/Authentication.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WWW/StrawViewer/Authentication.pm')
-rw-r--r--lib/WWW/StrawViewer/Authentication.pm216
1 files changed, 0 insertions, 216 deletions
diff --git a/lib/WWW/StrawViewer/Authentication.pm b/lib/WWW/StrawViewer/Authentication.pm
deleted file mode 100644
index 1fa2368..0000000
--- a/lib/WWW/StrawViewer/Authentication.pm
+++ /dev/null
@@ -1,216 +0,0 @@
-package WWW::StrawViewer::Authentication;
-
-use utf8;
-use 5.014;
-use warnings;
-
-=head1 NAME
-
-WWW::StrawViewer::Authentication - OAuth login support.
-
-=head1 SYNOPSIS
-
- use WWW::StrawViewer;
- my $hash_ref = WWW::StrawViewer->oauth_login($code);
-
-=head1 SUBROUTINES/METHODS
-
-=cut
-
-sub _get_token_oauth_url {
- my ($self) = @_;
- return $self->get_oauth_url() . 'token';
-}
-
-=head2 oauth_refresh_token()
-
-Refresh the access_token using the refresh_token. Returns a HASH ref with the `access_token` or undef.
-
-=cut
-
-sub oauth_refresh_token {
- my ($self) = @_;
-
- my $json_data = $self->lwp_post(
- $self->_get_token_oauth_url(),
- [Content => $self->get_www_content_type,
- client_id => $self->get_client_id() // return,
- client_secret => $self->get_client_secret() // return,
- refresh_token => $self->get_refresh_token() // return,
- grant_type => 'refresh_token',
- ]
- );
-
- return $self->parse_json_string($json_data);
-}
-
-=head2 get_accounts_oauth_url()
-
-Creates an OAuth URL with the 'code' response type. (Google's authorization server)
-
-=cut
-
-sub get_accounts_oauth_url {
- my ($self) = @_;
-
- my $url = $self->_append_url_args(
- ($self->get_oauth_url() . 'auth'),
- response_type => 'code',
- client_id => $self->get_client_id() // return,
- redirect_uri => $self->get_redirect_uri() // return,
- scope => 'https://www.googleapis.com/auth/youtube.force-ssl',
- access_type => 'offline',
- );
- return $url;
-}
-
-=head2 oauth_login($code)
-
-Returns a HASH ref with the access_token, refresh_token and some other info.
-
-The $code can be obtained by going to the URL returned by the C<get_accounts_oauth_url()> method.
-
-=cut
-
-sub oauth_login {
- my ($self, $code) = @_;
-
- length($code) < 20 and return;
-
- my $json_data = $self->lwp_post(
- $self->_get_token_oauth_url(),
- [Content => $self->get_www_content_type,
- client_id => $self->get_client_id() // return,
- client_secret => $self->get_client_secret() // return,
- redirect_uri => $self->get_redirect_uri() // return,
- grant_type => 'authorization_code',
- code => $code,
- ]
- );
-
- return $self->parse_json_string($json_data);
-}
-
-sub __AUTH_EOL__() { "\0\0\0" }
-
-=head2 load_authentication_tokens()
-
-Will try to load the access and refresh tokens from I<authentication_file>.
-
-=cut
-
-sub load_authentication_tokens {
- my ($self) = @_;
-
- if (defined $self->get_access_token and defined $self->get_refresh_token) {
- return 1;
- }
-
- my $file = $self->get_authentication_file() // return;
- my $key = $self->get_key() // return;
-
- if (-f $file) {
- local $/ = __AUTH_EOL__;
- open my $fh, '<:raw', $file or return;
-
- my @tokens;
- foreach my $i (0 .. 1) {
- chomp(my $token = <$fh>);
- $token =~ /\S/ || last;
- push @tokens, $self->decode_token($token);
- }
-
- $self->set_access_token($tokens[0]) // return;
- $self->set_refresh_token($tokens[1]) // return;
-
- close $fh;
- return 1;
- }
-
- return;
-}
-
-=head2 encode_token($token)
-
-Encode the token with the I<key> and return it.
-
-=cut
-
-sub encode_token {
- my ($self, $token) = @_;
-
- if (defined(my $key = $self->get_key)) {
- require MIME::Base64;
- return MIME::Base64::encode_base64($token ^ substr($key, -length($token)));
- }
-
- return;
-}
-
-=head2 decode_token($token)
-
-Decode the token with the I<key> and return it.
-
-=cut
-
-sub decode_token {
- my ($self, $token) = @_;
-
- if (defined(my $key = $self->get_key)) {
- require MIME::Base64;
- my $bin = MIME::Base64::decode_base64($token);
- return $bin ^ substr($key, -length($bin));
- }
-
- return;
-}
-
-=head2 save_authentication_tokens()
-
-Encode and save the access and refresh into the I<authentication_file>.
-
-=cut
-
-sub save_authentication_tokens {
- my ($self) = @_;
-
- my $file = $self->get_authentication_file() // return;
- my $access_token = $self->get_access_token() // return;
- my $refresh_token = $self->get_refresh_token() // return;
-
- if (open my $fh, '>:raw', $file) {
- foreach my $token ($access_token, $refresh_token) {
- print {$fh} $self->encode_token($token) . __AUTH_EOL__;
- }
- close $fh;
- return 1;
- }
-
- return;
-}
-
-=head1 AUTHOR
-
-Trizen, C<< <echo dHJpemVuQHByb3Rvbm1haWwuY29tCg== | base64 -d> >>
-
-
-=head1 SUPPORT
-
-You can find documentation for this module with the perldoc command.
-
- perldoc WWW::StrawViewer::Authentication
-
-
-=head1 LICENSE AND COPYRIGHT
-
-Copyright 2013-2015 Trizen.
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of either: the GNU General Public License as published
-by the Free Software Foundation; or the Artistic License.
-
-See L<http://dev.perl.org/licenses/> for more information.
-
-=cut
-
-1; # End of WWW::StrawViewer::Authentication