Add OAuth
This commit is contained in:
51
YTMusicAPI/Auth/OAuth/OAuthToken.pm
Normal file
51
YTMusicAPI/Auth/OAuth/OAuthToken.pm
Normal file
@@ -0,0 +1,51 @@
|
||||
package YTMusicAPI::Auth::OAuth::OAuthToken;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use JSON qw(decode_json);
|
||||
use Path::Tiny qw(path);
|
||||
|
||||
use parent 'YTMusicAPI::Auth::OAuth::Token';
|
||||
|
||||
sub new {
|
||||
my ( $class, $args ) = @_;
|
||||
my $self = $class->SUPER::new($args);
|
||||
bless $self, $class;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub is_oauth {
|
||||
my ($headers) = @_;
|
||||
my @required_keys = YTMusicAPI::Auth::OAuth::Token::members();
|
||||
|
||||
foreach my $key (@required_keys) {
|
||||
return 0 unless exists $headers->{$key};
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub update {
|
||||
my ( $self, $fresh_access ) = @_;
|
||||
$self->{access_token} = $fresh_access->{access_token};
|
||||
$self->{expires_at} = int( time() ) + $fresh_access->{expires_in};
|
||||
}
|
||||
|
||||
sub is_expiring {
|
||||
my ($self) = @_;
|
||||
return $self->{expires_at} - int( time() ) < 60 ? 1 : 0;
|
||||
}
|
||||
|
||||
sub from_json {
|
||||
my ( $class, $file_path ) = @_;
|
||||
my $file_pack;
|
||||
|
||||
if ( path($file_path)->is_file ) {
|
||||
$file_pack = decode_json( path($file_path)->slurp_utf8 );
|
||||
}
|
||||
|
||||
return $class->new(%$file_pack);
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user