Amazon-S3-Thin
view release on metacpan or search on metacpan
lib/Amazon/S3/Thin/Credentials.pm view on Meta::CPAN
=cut
use strict;
use warnings;
use Carp;
use JSON::PP ();
use LWP::UserAgent;
my $JSON = JSON::PP->new->utf8->canonical;
sub new {
my ($class, $key, $secret, $session_token) = @_;
my $self = {
key => $key,
secret => $secret,
session_token => $session_token,
};
return bless $self, $class;
}
lib/Amazon/S3/Thin/Resource.pm view on Meta::CPAN
package Amazon::S3::Thin::Resource;
use strict;
use warnings;
use URI::Escape qw(uri_escape_utf8);
sub new {
my $class = shift;
my $bucket = shift;
my $key = shift;
my $query_string = shift;
my $self = {
bucket => $bucket,
key => $key,
lib/Amazon/S3/Thin/Resource.pm view on Meta::CPAN
sub key_and_query {
my $self = shift;
return $self->key . $self->add_query;
}
sub urlencode {
my ($self, $unencoded, $allow_slash) = @_;
my $allowed = 'A-Za-z0-9_\-\.';
$allowed = "$allowed/" if $allow_slash;
return uri_escape_utf8($unencoded, "^$allowed");
}
1;
lib/Amazon/S3/Thin/Signer/V4.pm view on Meta::CPAN
);
push @$fields, 'x-amz-signature' => Digest::SHA::hmac_sha256_hex($policy, $signing_key);
return $fields;
}
my $_JSON;
sub _encode_policy {
my $self = shift;
return MIME::Base64::encode_base64(
($_JSON ||= JSON::PP->new->utf8->canonical)->encode(@_),
''
);
}
1;
=head1 LICENSE
Copyright (C) 2016, Robert Showalter
t/05_presigned_post.t view on Meta::CPAN
use Test::More;
use Amazon::S3::Thin;
use MIME::Base64 ();
use JSON::PP ();
BEGIN {
*CORE::GLOBAL::time = sub() { 1572566400 }; # Fri Nov 1 00:00:00 2019
}
my $_JSON;
sub policy { MIME::Base64::encode_base64(($_JSON ||= JSON::PP->new->utf8->canonical)->encode(@_), '') }
my $args = {
aws_access_key_id => 'dummy_access_key_id',
aws_secret_access_key => 'dummy_secret_access_key',
region => 'ap-north-east-1',
ua => MockUA->new,
};
my $client = Amazon::S3::Thin->new({%$args});
my $bucket = 'test-bucket';
( run in 0.547 second using v1.01-cache-2.11-cpan-49f99fa48dc )