/usr/share/perl5/Net/OAuth2/AccessToken.pm is in libnet-oauth2-perl 0.63-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | # Copyrights 2013-2016 by [Mark Overmeer].
# For other contributors see Changes.
# See the manual pages for details on the licensing terms.
# Pod stripped from pm file by OODoc 2.02.
package Net::OAuth2::AccessToken;
use vars '$VERSION';
$VERSION = '0.63';
use warnings;
use strict;
our $VERSION; # to be able to test in devel environment
use JSON qw/encode_json/;
use URI::Escape qw/uri_escape/;
use Encode qw/find_encoding/;
# Attributes to be saved to preserve the session.
my @session = qw/access_token token_type refresh_token expires_at
scope state auto_refresh/;
# This class name is kept for backwards compatibility: a better name
# would have been: Net::OAuth2::Session, with a ::Token::Bearer split-off.
# In the future, most of this functionality will probably need to be
# split-off in a base class ::Token, to be shared with a new extension
# which supports HTTP-MAC tokens as proposed by ietf dragt
# http://datatracker.ietf.org/doc/draft-ietf-oauth-v2-http-mac/
sub new(@) { my $class = shift; (bless {}, $class)->init({@_}) }
sub init($)
{ my ($self, $args) = @_;
$self->{NOA_expires_at} = $args->{expires_at}
|| ($args->{expires_in} ? time()+$args->{expires_in} : undef);
# client is the pre-v0.50 name
my $profile = $self->{NOA_profile} = $args->{profile} || $args->{client}
or die "::AccessToken needs profile object";
$self->{NOA_access_token} = $args->{access_token};
$self->{NOA_refresh_token} = $args->{refresh_token};
$self->{NOA_refresh_always}= $args->{refresh_always};
$self->{NOA_scope} = $args->{scope};
$self->{NOA_state} = $args->{state};
$self->{NOA_token_type} = $args->{token_type};
$self->{NOA_auto_refresh} = $args->{auto_refresh};
$self->{NOA_changed} = $args->{changed};
$self->{NOA_error} = $args->{error};
$self->{NOA_error_uri} = $args->{error_uri};
$self->{NOA_error_descr} = $args->{error_description} || $args->{error};
$self->{NOA_attr} = $args;
$self;
}
sub session_thaw($%)
{ my ($class, $session) = (shift, shift);
# we can use $session->{net_oauth2_version} to upgrade the info
$class->new(%$session, @_);
}
#--------------
sub token_type() {shift->{NOA_token_type}}
sub scope() {shift->{NOA_scope}}
sub state() {shift->{NOA_state}}
sub profile() {shift->{NOA_profile}}
sub attribute($) { $_[0]->{NOA_attr}{$_[1]} }
sub changed(;$)
{ my $s = shift; @_ ? $s->{NOA_changed} = shift : $s->{NOA_changed} }
sub access_token()
{ my $self = shift;
if($self->expired)
{ delete $self->{NOA_access_token};
$self->{NOA_changed} = 1;
$self->refresh if $self->auto_refresh;
}
elsif($self->refresh_always)
{ $self->refresh;
}
$self->{NOA_access_token};
}
#---------------
sub error() {shift->{NOA_error}}
sub error_uri() {shift->{NOA_error_uri}}
sub error_description() {shift->{NOA_error_descr}}
#---------------
sub refresh_token() {shift->{NOA_refresh_token}}
sub refresh_always() {shift->{NOA_refresh_always}}
sub auto_refresh() {shift->{NOA_auto_refresh}}
sub expires_at() { shift->{NOA_expires_at} }
sub expires_in() { shift->expires_at - time() }
sub expired(;$)
{ my ($self, $after) = @_;
my $when = $self->expires_at or return;
$after = 15 unless defined $after;
$when < time() + $after;
}
sub update_token($$$;$)
{ my ($self, $token, $type, $exp, $refresh) = @_;
$self->{NOA_access_token} = $token;
$self->{NOA_token_type} = $type if $type;
$self->{NOA_expires_at} = $exp;
$self->{NOA_refresh_token} = $refresh
if defined $refresh;
$token;
}
#--------------
sub to_json()
{ my $self = shift;
encode_json $self->session_freeze;
}
*to_string = \&to_json; # until v0.50
sub session_freeze(%)
{ my ($self, %args) = @_;
my %data = (net_oauth2_version => $VERSION);
defined $self->{"NOA_$_"} && ($data{$_} = $self->{"NOA_$_"}) for @session;
$self->changed(0);
\%data;
}
sub refresh()
{ my $self = shift;
$self->profile->update_access_token($self);
}
#--------------
sub request{ my $s = shift; $s->profile->request_auth($s, @_) }
sub get { my $s = shift; $s->profile->request_auth($s, 'GET', @_) }
sub post { my $s = shift; $s->profile->request_auth($s, 'POST', @_) }
sub delete { my $s = shift; $s->profile->request_auth($s, 'DELETE', @_) }
sub put { my $s = shift; $s->profile->request_auth($s, 'PUT', @_) }
1;
|