Amazon-Signature4-Lite
view release on metacpan or search on metacpan
lib/Amazon/Signature4/Lite.pm view on Meta::CPAN
The returned hash reference can be passed directly as the headers for an
L<HTTP::Tiny> request.
=head2 parse_service_url(%args)
my ($host, $service, $region) = Amazon::Signature4::Lite->parse_service_url(
host => 's3.us-east-2.amazonaws.com',
default_region => 'us-east-1',
);
Extracts service name and region from an AWS endpoint URL. Can be
called as a class or instance method.
I<Note: The patterns used for parsing are S3/AWS endpoint focused, not
a general URL parser.>
=head1 DEPENDENCIES
All dependencies are Perl core modules (since 5.10) or already
required by distributions in the Amazon::* toolchain:
=over 4
=item * L<Digest::SHA> (core since 5.10)
share/README.md view on Meta::CPAN
The returned hash reference can be passed directly as the headers for an
[HTTP::Tiny](https://metacpan.org/pod/HTTP%3A%3ATiny) request.
## parse\_service\_url(%args)
my ($host, $service, $region) = Amazon::Signature4::Lite->parse_service_url(
host => 's3.us-east-2.amazonaws.com',
default_region => 'us-east-1',
);
Extracts service name and region from an AWS endpoint URL. Can be
called as a class or instance method.
_Note: The patterns used for parsing are S3/AWS endpoint focused, not
a general URL parser._
# DEPENDENCIES
All dependencies are Perl core modules (since 5.10) or already
required by distributions in the Amazon::\* toolchain:
- [Digest::SHA](https://metacpan.org/pod/Digest%3A%3ASHA) (core since 5.10)
- [MIME::Base64](https://metacpan.org/pod/MIME%3A%3ABase64) (core)
- [POSIX](https://metacpan.org/pod/POSIX) (core)
t/01-signature4-lite.t view on Meta::CPAN
########################################################################
# parse_service_url
########################################################################
subtest 'parse_service_url' => sub {
# class method call
my @r = Amazon::Signature4::Lite->parse_service_url(
host => 's3.amazonaws.com',
default_region => 'us-east-1',
);
is $r[1], 's3', 's3 global endpoint â service';
is $r[2], 'us-east-1', 's3 global endpoint â falls back to default region';
# regional S3
@r = Amazon::Signature4::Lite->parse_service_url(
host => 's3.us-east-2.amazonaws.com',
default_region => 'us-east-1',
);
is $r[1], 's3', 'regional S3 â service';
is $r[2], 'us-east-2', 'regional S3 â region extracted';
# non-S3 service
@r = Amazon::Signature4::Lite->parse_service_url(
host => 'ec2.us-west-2.amazonaws.com',
default_region => 'us-east-1',
);
is $r[1], 'ec2', 'EC2 endpoint â service';
is $r[2], 'us-west-2', 'EC2 endpoint â region extracted';
# explicit service/region override
@r = Amazon::Signature4::Lite->parse_service_url(
host => 's3.amazonaws.com',
service => 'execute-api',
region => 'ap-southeast-1',
);
is $r[1], 'execute-api', 'explicit service not overridden';
is $r[2], 'ap-southeast-1', 'explicit region not overridden';
( run in 3.643 seconds using v1.01-cache-2.11-cpan-7e1922ba9f2 )