Amazon-S3
view release on metacpan or search on metacpan
lib/Amazon/S3.pm view on Meta::CPAN
}
########################################################################
sub turn_on_special_retry {
########################################################################
my ($self) = @_;
if ( $self->retry ) {
# In the field we are seeing issue of Amazon returning with a 400
# code in the case of timeout. From AWS S3 logs: REST.PUT.PART
# Backups/2017-05-04/<account>.tar.gz "PUT
# /Backups<path>?partNumber=27&uploadId=<id> - HTTP/1.1" 400
# RequestTimeout 360 20971520 20478 - "-" "libwww-perl/6.15"
my $http_codes_hr = $self->ua->codes_to_determinate();
$http_codes_hr->{$HTTP_BAD_REQUEST} = $TRUE;
}
return;
}
########################################################################
sub turn_off_special_retry {
########################################################################
my ($self) = @_;
if ( $self->retry ) {
# In the field we are seeing issue with Amazon returning a 400
# code in the case of timeout. From AWS S3 logs: REST.PUT.PART
# Backups/2017-05-04/<account>.tar.gz "PUT
# /Backups<path>?partNumber=27&uploadId=<id> - HTTP/1.1" 400
# RequestTimeout 360 20971520 20478 - "-" "libwww-perl/6.15"
my $http_codes_hr = $self->ua->codes_to_determinate();
delete $http_codes_hr->{$HTTP_BAD_REQUEST};
}
return;
}
########################################################################
lib/Amazon/S3.pm view on Meta::CPAN
my $xml = <<'XML';
<CreateBucketConfiguration>
<LocationConstraint>%s</LocationConstraint>
</CreateBucketConfiguration>
XML
my $data = defined $region ? sprintf $xml, $region : $EMPTY;
my $retval = $self->_send_request_expect_nothing(
{ method => 'PUT',
path => "$bucket/",
headers => { %header_ref, 'Content-Length' => length $data },
data => $data,
region => $region,
},
);
my $bucket_obj = $retval ? $self->bucket($bucket) : undef;
return $bucket_obj;
lib/Amazon/S3.pm view on Meta::CPAN
if $response->code =~ /^2\d\d$/xsm;
# anything else is a failure, and we save the parsed result
$self->_remember_errors( $response->content, $TRUE );
return $FALSE;
}
# Send a HEAD request first, to find out if we'll be hit with a 307 redirect.
# Since currently LWP does not have true support for 100 Continue, it simply
# slams the PUT body into the socket without waiting for any possible redirect.
# Thus when we're reading from a filehandle, when LWP goes to reissue the request
# having followed the redirect, the filehandle's already been closed from the
# first time we used it. Thus, we need to probe first to find out what's going on,
# before we start sending any actual data.
########################################################################
sub _send_request_expect_nothing_probed { ## no critic (ProhibitUnusedPrivateSubroutines)
########################################################################
my ( $self, @args ) = @_;
my ( $method, $path, $conf, $value, $region );
lib/Amazon/S3/Bucket.pm view on Meta::CPAN
########################################################################
sub _add_key {
########################################################################
my ( $self, @args ) = @_;
my ( $data, $headers, $key ) = @{ $args[0] }{qw{data headers key}};
my $account = $self->account;
if ( ref $data ) {
return $account->_send_request_expect_nothing_probed(
{ method => 'PUT',
path => $self->_uri($key),
headers => $headers,
data => $data,
region => $self->region,
},
);
}
else {
return $account->_send_request_expect_nothing(
{ method => 'PUT',
path => $self->_uri($key),
headers => $headers,
data => $data,
region => $self->region,
},
);
}
}
########################################################################
lib/Amazon/S3/Bucket.pm view on Meta::CPAN
$conf->{'Content-MD5'} = $md5_base64;
$conf->{'Content-Length'} = $length;
my $params = "?partNumber=${part_number}&uploadId=${upload_id}";
$self->logger->debug( 'uploading ' . sprintf 'part: %s length: %s',
$part_number, length $data );
my $request = $acct->_make_request(
{ region => $self->region,
method => 'PUT',
path => $self->_uri($key) . $params,
headers => $conf,
data => $data,
},
);
my $response = $acct->_do_http($request);
$acct->_croak_if_response_error($response);
lib/Amazon/S3/Bucket.pm view on Meta::CPAN
$request_headers{'x-amz-copy-source'} = sprintf '%s/%s',
$bucket // $self->{bucket},
$acct->_urlencode($source);
}
$request_headers{'x-amz-tagging-directive'} //= 'COPY';
$key = $self->_uri($key);
my $request = $acct->_make_request( 'PUT', $key, \%request_headers, );
my $response = $acct->_do_http($request);
if ( $response->code !~ /\A2\d\d\z/xsm ) {
$acct->_remember_errors( $response->content, 1 );
croak $response->status_line;
}
return $acct->_xpc_of_content( $response->content );
}
lib/Amazon/S3/Bucket.pm view on Meta::CPAN
$headers->{'x-amz-acl'} = $conf->{acl_short};
}
my $xml = $conf->{acl_xml} || $EMPTY;
my $account = $self->account;
$headers->{'Content-Length'} = length $xml;
return $account->_send_request_expect_nothing(
{ method => 'PUT',
path => $path,
headers => $headers,
data => $xml,
region => $self->region,
},
);
}
########################################################################
sub get_location_constraint {
lib/Amazon/S3/Bucket.pm view on Meta::CPAN
=item public-read
Owner gets FULL_CONTROL and the anonymous principal is
granted READ access. If this policy is used on an object, it
can be read from a browser with no authentication.
=item public-read-write
Owner gets FULL_CONTROL, the anonymous principal is granted
READ and WRITE access. This is a useful policy to apply to a
bucket, if you intend for any anonymous user to PUT objects
into the bucket.
=item authenticated-read
Owner gets FULL_CONTROL, and any principal authenticated as
a registered Amazon S3 user is granted READ access.
=back
=item key
( run in 0.614 second using v1.01-cache-2.11-cpan-4e96b696675 )