rypt::OpenSSL::RSA ();
use MIME::Base64 ();
use Mojar::ClassShare 'have';
use Mojo::JSON 'encode_json', 'decode_json';
# Attributes
# JWT Header
has typ => 'JWT';
has alg => 'RS256';
# JWT Claim Se
::encode_base64url(encode_json $hashref);
}
sub demogrify {
my ($self, $safestring) = @_;
return {} unless defined $safestring && length $safestring;
return decode_json(MIME::Base64::decode_bas
e64url($safestring));
}
package Mojo::JSON;
# Need json keys to be sorted => s/keys/sort keys/
no warnings 'redefine';
sub _encode_object {
my $object = shift;
my @pairs = map { _encode_string($_
;
if ($res->is_success) {
delete @$self{qw(code content error message)};
my $j = $res->json;
$self->{snakecase($_)} = $j->{$_} for keys %$j;
return $self->success(1);
}
else {
sprintf 'Error (%u): %s', $_[0]->code, $_[0]->message);
if ($res and my $j = $res->json) {
# Got JSON body in response
$self->content($j);
my $m = ref($j->{error}) ? $j->{error}
>grant_type,
assertion => $jwt->encode
})->res;
if ($res->is_success) {
my $j = $res->json;
return undef unless ref $j eq 'HASH' and $j->{expires_in};
return $j->{access_token};
'JWT',
alg => 'RS256'
};
my $t = Mojo::JSON->new->encode($s);
require Data::Dump;
say Data::Dump::dump($t);
say Data::Dump::dump(Mojo::JSON->new->decode($t));
say MIME::Base64::encode_
base64url($t);
my $a = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9';
say Data::Dump::dump(Mojo::JSON->new->decode(MIME::Base64::decode_base64url($a)));
}
subtest q{header} => sub {
ok $jwt->header, '
ate_key => path('data/privatekey.pem')->slurp)), 'decode(encode())';
delete @$jwt{qw( header body signature json cipher private_key )};
is_deeply $jwt2, $jwt, 'Round trip';
};
};
done_testing();