AnyEvent-Net-Amazon-S3
view release on metacpan or search on metacpan
bin/s3cl_ae view on Meta::CPAN
my $response = $bucket->list_all($ls_conf)
or die $s3->err . ": " . $s3->errstr;
return $response if $mode eq 'data';
foreach my $key ( @{ $response->{keys} } ) {
my $key_last_modified
= $key->{last_modified}; # 2008-07-14T22:31:10.000Z
$key_last_modified =~ s/:\d{2}\.\d{3}Z$//;
my $key_name = $key->{key};
my $key_size = $key->{size};
print "$key_size $key_last_modified $key_name\n";
}
}
sub rm {
my $bucket = _get_bucket();
helper("Must have a <bucket>:<key>") unless $args{prefix_or_key};
my $res = "NO";
if ( $args{force} ) {
$res = 'y';
} else {
print "\nOnce deleted there is no way to retrieve this key again."
. "\nAre you sure you want to delete $args{bucket}:$args{prefix_or_key}? y/N\n";
( $res = <STDIN> ) =~ s/\n//;
}
if ( $res eq 'y' ) {
# delete key in this bucket
my $response = $bucket->delete_key( $args{prefix_or_key} )
or die $s3->err . ": " . $s3->errstr;
}
}
sub mk_bucket {
my $bucketname = $args{bucket};
my $bucket
= $s3->add_bucket(
{ bucket => $bucketname, location_constraint => 'EU' } )
or die $s3->err . ": " . $s3->errstr;
}
sub buckets {
my $response = $s3->buckets;
my $num = scalar @{ $response->{buckets} || [] };
print "You have $num bucket";
print "s" if $num != 1;
print ":\n";
foreach my $bucket ( @{ $response->{buckets} } ) {
print '- ' . $bucket->bucket . "\n";
}
}
sub terminal {
my $encoding = eval {
require Term::Encoding;
Term::Encoding::get_encoding();
} || "utf-8";
binmode STDOUT, ":encoding($encoding)";
}
# TODO: Replace with AppConfig this is ick!
sub get_options {
my $help = 0;
my $man = 0;
my $force = 0;
my $loc = "US";
my $bucket = "";
GetOptions(
\%args, "bucket=s", "jurisdiction=s",
"acl_short=s",
"f|force" => \$force,
"h|help|?" => \$help,
"man" => \$man,
) or pod2usage(2);
$args{force} = $force;
foreach my $arg (@ARGV) {
if ( $arg =~ /:/ ) {
my ( $b, $rest ) = split( ":", $arg );
$args{bucket} = $b;
$args{prefix_or_key} = $rest;
}
}
# For cp / sync etc
$args{dest_or_source} = $ARGV[2] if $ARGV[2];
pod2usage(1) if $help || @ARGV == 0;
pod2usage( -verbose => 2 ) if $man;
}
sub _get_bucket {
helper("No bucket supplied") unless $args{bucket};
my $bucket = $s3->bucket( $args{bucket} );
die $s3->err . ": " . $s3->errstr if $s3->err;
helper("Could not get bucket $args{bucket}") unless $bucket;
return $bucket;
}
sub helper {
my $msg = shift;
if ($msg) {
pod2usage( -message => $msg, -exitval => 2 );
}
exit;
}
=pod
=encoding UTF-8
=head1 NAME
s3cl_ae - Command line for Amazon s3 cloud storage
=head1 VERSION
( run in 1.500 second using v1.01-cache-2.11-cpan-39bf76dae61 )