WWW-FCM-HTTP-V1
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/WWW/FCM/HTTP/V1/OAuth.pm view on Meta::CPAN
return $res;
}
sub _jwt_config_from_json {
my ($json, $scopes) = @_;
my $secret = decode_json($json);
return +{
client_email => $secret->{client_email},
private_key => $secret->{private_key},
private_key_id => $secret->{private_key_id},
scopes => $scopes,
token_url => $secret->{token_url} || $DEFAULT_TOKEN_URL,
};
}
sub get_token {
my ($self, %args) = @_;
my $cache_key = $self->jwt_config->{private_key_id};
if ($self->cache) {
if ($args{force_refresh}) {
$self->cache->delete($cache_key);
} else {
my $token_cache = $self->cache->get($cache_key);
return $token_cache if $token_cache;
}
}
my $claims = $self->_construct_claims($self->jwt_config);
my $jwt = JSON::WebToken->encode($claims, $self->jwt_config->{private_key}, 'RS256');
my $res = $self->ua->post(
$self->token_url,
['Content-Type' => 'application/x-www-form-urlencoded'],
['grant_type' => $self->grant_type, assertion => $jwt],
);
unless ($res->is_success) {
croak sprintf('Failed to get access token. %s [req] %s [res] %s', $res->status_line, $res->request->request_line, $res->content)
}
my $res_content;
t/02_send.t view on Meta::CPAN
use JSON;
use HTTP::Status qw(:constants);
use WWW::FCM::HTTP::V1;
plan skip_all => 'Not supported on MSWin32' if $^O eq 'MSWin32';
my $dummy_api_key_json = '{
"type": "service_account",
"project_id": "test-project",
"private_key_id": "test_key_id",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQCaE2qyAMVeCLiFdaX5BJeuLZLZUrRE8SMaPmzgI8/t9texQI1o\nQp8mXpY1emcZ8XI9aXliP3wHN5YKRENKtXsgdwevK3El8AjElZae9KSkhfcu34kj\nE3em5JzQVswfaY/tuql897ViaO5V2RLzCv/GEpQX8fd7vlo0AbGciugArwIDAQAB\nAoG...
}';
my $fcm = WWW::FCM::HTTP::V1->new(api_url => 'api_url', api_key_json => $dummy_api_key_json);
sub test_send {
my %specs = @_;
my ($input, $expects, $expects_exception, $desc)
= @specs{qw/input expects expects_exception desc/};
subtest $desc => sub {
my $access_token_httpd = run_http_server {
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.798 second using v1.00-cache-2.02-grep-82fe00e-cpan-f73e49a70403 )