Amazon-S3-Thin

 view release on metacpan or  search on metacpan

t/03_request.t  view on Meta::CPAN

is $req3->method, "HEAD";
is $req3->uri, "http://s3.ap-north-east-1.amazonaws.com/tmpfoobar/dir/private.txt";

diag "test GET request for list_objects";
my $res4 = $client->list_objects($bucket, {prefix => "12012", delimiter => "/"});
my $req4 = $res4->request;
is $req4->method, "GET";
is $req4->uri, "http://s3.ap-north-east-1.amazonaws.com/tmpfoobar/?delimiter=%2F&prefix=12012";

diag "test POST for delete_multiple_objects";
my $res5 = $client->delete_multiple_objects( $bucket, 'key/one.txt', 'key/two.png' );
my $req5 = $res5->request;
is $req5->method, "POST";
is $req5->uri, "http://s3.ap-north-east-1.amazonaws.com/tmpfoobar/?delete=";
is $req5->header('Content-MD5'), 'pjGVehBgNtca8xN21pLCCA==';

diag "test GET request with headers";
my $res6 = $client->get_object($bucket, $key, {"X-Test-Header" => "Foo"});
my $req6 = $res6->request;
is $req6->method, "GET";
is $req6->uri, "http://s3.ap-north-east-1.amazonaws.com/tmpfoobar/dir/private.txt";

t/05_presigned_post.t  view on Meta::CPAN

                {'x-amz-credential' => 'dummy_access_key_id/20191101/ap-north-east-1/s3/aws4_request'},
                {'x-amz-date'       => '20191101T000000Z'},
            ],
            expiration => '2019-11-01T01:00:00Z',
        }),
        'x-amz-signature' => '28baaf6392b4a747f1e65d9bb33f205342e025bf23f3d7ab37de880828ac0f52',
    ],
}, '${filename} expands starts-with condition';

is_deeply $client->generate_presigned_post($bucket, $key, [
    'Content-Type'   => 'image/png',
    'x-amz-meta-foo' => 'bar',
]), {
    url    => 'http://s3.ap-north-east-1.amazonaws.com/test-bucket/',
    fields => [
        'Content-Type'   => 'image/png',
        'x-amz-meta-foo' => 'bar',
        key                => $key,
        'x-amz-algorithm'  => 'AWS4-HMAC-SHA256',
        'x-amz-credential' => 'dummy_access_key_id/20191101/ap-north-east-1/s3/aws4_request',
        'x-amz-date'       => '20191101T000000Z',
        policy             => policy({
            conditions => [
                {bucket             => 'test-bucket'},
                {key                => 'dir/private.txt'},
                {'x-amz-algorithm'  => 'AWS4-HMAC-SHA256'},

t/06_request_virtual_host.t  view on Meta::CPAN

is $req3->method, "HEAD";
is $req3->uri, "http://tmpfoobar.s3.amazonaws.com/dir/private.txt";

diag "test GET request for list_objects";
my $res4 = $client->list_objects($bucket, {prefix => "12012", delimiter => "/"});
my $req4 = $res4->request;
is $req4->method, "GET";
is $req4->uri, "http://tmpfoobar.s3.amazonaws.com/?delimiter=%2F&prefix=12012";

diag "test POST for delete_multiple_objects";
my $res5 = $client->delete_multiple_objects( $bucket, 'key/one.txt', 'key/two.png' );
my $req5 = $res5->request;
is $req5->method, "POST";
is $req5->uri, "http://tmpfoobar.s3.amazonaws.com/?delete=";
is $req5->header('Content-MD5'), 'pjGVehBgNtca8xN21pLCCA==';

diag "test GET request with headers";
my $res6 = $client->get_object($bucket, $key, {"X-Test-Header" => "Foo"});
my $req6 = $res6->request;
is $req6->method, "GET";
is $req6->uri, "http://tmpfoobar.s3.amazonaws.com/dir/private.txt";

xt/92_presigned_post.t  view on Meta::CPAN

        Content      => [
            @{$presigned->{fields}},
            file => [$filename],
        ],
    );
}

subtest 'upload with content-type and metadata' => sub {
    my $key = 'upload.txt';
    my $presigned = $client->generate_presigned_post($bucket, $key, [
        'Content-Type'   => 'image/png',
        'x-amz-meta-foo' => 'bar',
    ], [
        ['starts-with' => '$x-amz-meta-foo', ''],
        ['starts-with' => '$Content-Type', 'image/'],
    ]);

    my $res = upload($presigned);
    is $res->code, 204, 'upload via presigned url';

    $res = $client->get_object($bucket, $key);
    is $res->code, 200, 'get uploaded object';
    is $res->content, $content;
    is $res->header('content-type'), 'image/png';
    is $res->header('x-amz-meta-foo'), 'bar';

    $res = $client->delete_object($bucket, $key);
    is $res->code, 204, 'delete uploaded object';
};

subtest 'upload with filename foo-${filename}' => sub {
    my $presigned = $client->generate_presigned_post($bucket, 'foo-${filename}', [], []);

    my $res = upload($presigned);



( run in 2.957 seconds using v1.01-cache-2.11-cpan-df04353d9ac )