Files
ytmusicapi-perl/YTMusicAPI/Auth/OAuth/OAuthToken.pm
mschuepbach 8c0319f293 Add OAuth
2024-03-27 15:25:17 +01:00

52 lines
1.0 KiB
Perl

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;