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 )