AWS-S3
view release on metacpan or search on metacpan
lib/AWS/S3/Bucket.pm view on Meta::CPAN
required => 0,
lazy => 1,
clearer => '_clear_policy',
default => sub {
my $self = shift;
my $type = 'GetBucketPolicy';
my $req = $self->s3->request( $type, bucket => $self->name, );
my $response = $req->request();
eval { $response->_parse_errors };
if ( my $msg = $response->friendly_error() ) {
if ( $response->error_code eq 'NoSuchBucketPolicy' ) {
return '';
} else {
die $msg;
} # end if()
} # end if()
return $response->response->decoded_content();
},
lib/AWS/S3/Request/SetBucketPolicy.pm view on Meta::CPAN
has 'policy' => (
is => 'ro',
isa => 'Maybe[Str]',
required => 1,
# Evan Carroll 6/14/2012
# COMMENTED THIS OUT, not sure if it ever worked on VSO
# Must be able to decode the JSON string:
# where => sub {
# eval { decode_json( $_ ); 1 };
# }
);
has '+_expect_nothing' => ( default => 1 );
sub request {
my $s = shift;
my $signer = AWS::S3::Signer->new(
s3 => $s->s3,
t/001_compiles_pod.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use File::Find;
use Moose;
if(($ENV{HARNESS_PERL_SWITCHES} || '') =~ /Devel::Cover/) {
plan skip_all => 'HARNESS_PERL_SWITCHES =~ /Devel::Cover/';
}
if(!eval 'use Test::Pod; 1') {
*Test::Pod::pod_file_ok = sub { SKIP: { skip "pod_file_ok(@_) (Test::Pod is required)", 1 } };
}
if(!eval 'use Test::Pod::Coverage; 1') {
*Test::Pod::Coverage::pod_coverage_ok = sub { SKIP: { skip "pod_coverage_ok(@_) (Test::Pod::Coverage is required)", 1 } };
}
my @files;
find(
{
wanted => sub { /\.pm$/ and push @files, $File::Find::name },
no_chdir => 1
},
-e 'blib' ? 'blib' : 'lib',
);
plan tests => @files * 3;
for my $file (@files) {
my $module = $file; $module =~ s,\.pm$,,; $module =~ s,.*/?lib/,,; $module =~ s,/,::,g;
ok eval "use $module; 1", "use $module" or diag $@;
Test::Pod::pod_file_ok($file);
TODO: {
# not enough POD coverage yet,
local $TODO = 'POD coverage';
Test::Pod::Coverage::pod_coverage_ok($module);
}
}
t/002_changes.t view on Meta::CPAN
#!perl
use strict;
use warnings;
use Test::More;
eval 'use Test::CPAN::Changes';
plan skip_all => 'Test::CPAN::Changes required for this test' if $@;
changes_ok();
t/010_basic.t view on Meta::CPAN
my $bucket_name = $ENV{AWS_TEST_BUCKET} || "aws-s3-test-" . int(rand() * 1_000_000) . '-' . time() . "-foo";
ok my $bucket = $s3->add_bucket( name => $bucket_name, location => 'us-east-1' ), "created bucket '$bucket_name'";
#exit;
if( $bucket )
{
if(0) {
# Try cloudfront integration if we've got it:
eval { require AWS::CloudFront; require AWS::CloudFront::S3Origin; };
die $@ if $@;
unless( $@ )
{
my $cf = AWS::CloudFront->new(
access_key_id => $s3->access_key_id,
secret_access_key => $s3->secret_access_key,
);
my $dist = $cf->add_distribution(
Origin => AWS::CloudFront::S3Origin->new(
DNSName => $bucket->name . '.s3.amazonaws.com',
t/010_basic.t view on Meta::CPAN
# Now check it:
is ${$bucket->file($filename)->contents}, $new_contents, "set file.contents works";
# use alternative update method
$new_contents = 'More new content';
$file->update( contents => \$new_contents );
is ${$bucket->file($filename)->contents}, $new_contents, "set file.update works";
};
DELETE_FILE: {
eval { $bucket->delete };
ok $@, 'bucket.delete fails when bucket is not empty.';
like $@, qr/BucketNotEmpty/, 'error looks like BucketNotEmpty';
ok $bucket->file($filename)->delete, 'file.delete';
ok ! $bucket->file($filename), 'file no longer exists in bucket';
};
ADD_MANY_FILES: {
my %info = ( );
# Add the files:
t/010_basic.t view on Meta::CPAN
# is $file->key, "bar/baz/foo.$_.txt", "file $_ is what we expected";
# }# end for()
# };
# Delete the files:
ok($bucket->delete_multi( map { $_ } sort keys %info ), 'bucket.delete_multi(@keys)' );
# Now make sure that not a single one still exists:
foreach( sort keys %info )
{
ok ! eval {$bucket->file($_)}, "bucket(@{[ $bucket->name ]}).file($_) doesn't exist";
}# end foreach()
# map {
# ok $bucket->file($_)->delete && ! $bucket->file($_), "bucket.file($_).delete worked"
# } sort keys %info;
};
# proof content type reading and writing
CONTENT_TYPE: {
t/010_basic.t view on Meta::CPAN
foreach my $bucket ( grep { $_->name =~ m{^(aws-s3-test\-\d+).+?foo$} } $s3->buckets )
{
warn "Bucket: ", $bucket->name, "\n";
my $iter = $bucket->files( page_size => 100, page_number => 1 );
while( my @files = $iter->next_page )
{
$bucket->delete_multi( map { $_->key } @files );
# foreach my $file ( @files )
# {
# warn "\tdelete: ", $file->key, "\n";
# eval { $file->delete };
# }# end foreach()
$iter->page_number( 1 );
}# end while()
eval { $bucket->delete };
$@ && do { warn $@ };
warn "\n";
}# end foreach()
}# end cleanup()
use_ok('AWS::S3');
my $s3 = AWS::S3->new(
access_key_id => $ENV{AWS_ACCESS_KEY_ID} // 'foo',
secret_access_key => $ENV{AWS_SECRET_ACCESS_KEY} // 'bar',
endpoint => 'bad.hostname.',
);
my $bucket_name = "aws-s3-test-" . int(rand() * 1_000_000) . '-' . time() . "-foo";
eval {
my $bucket = $s3->add_bucket( name => $bucket_name, location => 'us-west-1' );
};
like(
$@,
qr/Can't connect to aws-s3-test-.*?bad\.hostname/,
'endpoint was used'
);
isa_ok(
( run in 1.657 second using v1.01-cache-2.11-cpan-5a3173703d6 )