WWW-FCM-HTTP-V1

 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 distribution
 view release on metacpan -  search on metacpan

( run in 1.798 second using v1.00-cache-2.02-grep-82fe00e-cpan-f73e49a70403 )