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 1.093 second using v1.01-cache-2.11-cpan-49f99fa48dc )