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 )