AWS-S3
view release on metacpan or search on metacpan
lib/AWS/S3/File.pm view on Meta::CPAN
package AWS::S3::File;
use Moose;
use Carp 'confess';
use MooseX::Types -declare => [qw/fileContents/];
use MooseX::Types::Moose qw/Str ScalarRef CodeRef/;
subtype fileContents, as ScalarRef;
coerce fileContents,
from CodeRef,
via {
my $ref = $_[0];
my $v = $ref->();
ref $v ? $v : \$v
}
;
has 'key' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'bucket' => (
is => 'ro',
isa => 'AWS::S3::Bucket',
required => 1,
weak_ref => 0,
);
has 'size' => (
is => 'ro',
isa => 'Int',
required => 0,
default => sub {
my $self = shift;
return length ${$self->contents};
}
);
has 'etag' => (
is => 'ro',
isa => 'Str',
required => 0,
);
has 'owner' => (
is => 'ro',
isa => 'AWS::S3::Owner',
required => 0,
weak_ref => 1,
);
has 'storage_class' => (
is => 'ro',
isa => 'Str',
default => 'STANDARD',
required => 1,
);
has 'lastmodified' => (
is => 'ro',
isa => 'Str',
required => 0,
);
has 'contenttype' => (
is => 'rw',
isa => 'Str',
required => 0,
default => 'binary/octet-stream'
);
has 'is_encrypted' => (
is => 'rw',
isa => 'Bool',
required => 1,
lazy => 1,
default => sub {
my $s = shift;
my $type = 'GetFileInfo';
my $req = $s->bucket->s3->request(
$type,
bucket => $s->bucket->name,
key => $s->key,
);
return $req->request->response->header( 'x-amz-server-side-encryption' ) ? 1 : 0;
},
);
has 'contents' => (
is => 'rw',
isa => fileContents,
required => 0,
lazy => 1,
( run in 1.353 second using v1.01-cache-2.11-cpan-98e64b0badf )