Amazon-PAApi5-Signature
view release on metacpan or search on metacpan
lib/Amazon/PAApi5/Signature.pm view on Meta::CPAN
return [shift->headers];
}
sub headers_as_hashref {
return {shift->headers};
}
sub _get_signature_key {
my ($self) = @_;
my $k_date = hmac_sha256($self->current_date, 'AWS4' . $self->secret_key);
my $k_region = hmac_sha256($self->region, $k_date);
my $k_service = hmac_sha256($self->service, $k_region);
my $k_signing = hmac_sha256($self->aws4_request, $k_service);
return $k_signing;
}
sub _build_amz_target {
return 'com.amazon.paapi5.v1.ProductAdvertisingAPIv1.' . shift->operation;
}
sub _get_time_stamp {
return strftime("%Y%m%dT%H%M%SZ", gmtime()); # 20191128T235650Z
}
sub _get_date {
return strftime("%Y%m%d", gmtime()); # 20191128
}
sub to_request {
my ($self) = @_;
return {
method => $self->http_method,
uri => $self->req_url,
headers => $self->headers_as_hashref,
content => $self->payload,
};
}
1;
__END__
=encoding UTF-8
=head1 NAME
Amazon::PAApi5::Signature - Amazon Product Advertising API(PA-API) 5.0 Helper
=head1 SYNOPSIS
This code is an example of US region.
use Amazon::PAApi5::Payload;
use Amazon::PAApi5::Signature;
use HTTP::Request::Common;
use LWP::UserAgent;
use Data::Dumper;
my $payload = Amazon::PAApi5::Payload->new(
'PARTNER_TAG'
);
my $sig = Amazon::PAApi5::Signature->new(
'ACCESS_KEY',
'SECRET_KEY',
$payload->to_json({
Keywords => 'Perl',
SearchIndex => 'All',
ItemCount => 2,
Resources => [qw/
ItemInfo.Title
/],
}),
);
my $ua = LWP::UserAgent->new;
my $req = POST $sig->req_url, $sig->headers, Content => $sig->payload;
my $res = $ua->request($req);
warn Dumper($res->status_line, $res->content);
NOTE that Product Advertising API 5.0 has usage limit. Please confirm L<https://webservices.amazon.com/paapi5/documentation/troubleshooting/api-rates.html> or a page for your region.
See B<example/> directory of this module for more examples.
L<https://github.com/bayashi/Amazon-PAApi5-Signature/tree/main/example>
=head1 DESCRIPTION
Amazon::PAApi5::Signature generates a request headers and request body for Amazon Product Advertising API(PA-API) 5.0
L<https://webservices.amazon.com/paapi5/documentation/quick-start.html>
=head1 METHODS
=head2 new($access_key, $secret_key, $request_payload, $options)
Constructor
=head2 req_url
Get request URL string
=head2 headers
Get signed HTTP headers as hash
=head3 headers_as_arrayref
=head3 headers_as_hashref
=head2 to_request
Get a hash for HTTP request
( run in 2.497 seconds using v1.01-cache-2.11-cpan-d8267643d1d )