Amazon-S3
view release on metacpan or search on metacpan
## error
The decoded XML string as a hash object of the last error.
## last\_response
Returns the last [HTTP::Response](https://metacpan.org/pod/HTTP%3A%3AResponse) object.
## last\_request
Returns the last [HTTP::Request](https://metacpan.org/pod/HTTP%3A%3ARequest) object.
## level
Set the logging level.
default: error
## turn\_on\_special\_retry
Called to add extra retry codes if retry has been set
lib/Amazon/S3.pm view on Meta::CPAN
my ($self) = @_;
my $region = $ENV{AWS_REGION} || $ENV{AWS_DEFAULT_REGION};
return $region
if $region;
my $url
= 'http://169.254.169.254/latest/meta-data/placement/availability-zone';
my $request = HTTP::Request->new( 'GET', $url );
my $ua = LWP::UserAgent->new;
$ua->timeout(0);
my $response = eval { return $ua->request($request); };
if ( $response && $response->is_success ) {
if ( $response->content =~ /\A([[:lower:]]+[-][[:lower:]]+[-]\d+)/xsm ) {
$region = $1;
}
lib/Amazon/S3.pm view on Meta::CPAN
if ( length $bucketname < $MIN_BUCKET_NAME_LENGTH ) {
return $FALSE;
}
return $FALSE if $bucketname !~ m{\A[[:lower:]][[:lower:]\d-]*\z}xsm;
return $FALSE if $bucketname !~ m{[[:lower:]\d]\z}xsm;
return $TRUE;
}
# make the HTTP::Request object
########################################################################
sub _make_request {
########################################################################
my ( $self, @args ) = @_;
my ( $method, $path, $headers, $data, $metadata, $region );
if ( ref $args[0] && reftype( $args[0] ) eq 'HASH' ) {
( $method, $path, $headers, $data, $metadata, $region )
= @{ $args[0] }{qw(method path headers data metadata region)};
lib/Amazon/S3.pm view on Meta::CPAN
die "could not a uri for bucket: $bucket, host: $host, path: $path\n"
if !$url || $EVAL_ERROR;
}
else {
$url = "$protocol://$bucket.$host$path$query_string";
}
}
$self->get_logger->debug( sprintf 'URL (uri): %s', $url );
my $request = HTTP::Request->new( $method, $url, $http_headers );
$self->last_request($request);
$request->content($data);
$self->signer->region($region); # always set regional endpoint for signing
$self->signer->sign($request);
$self->get_logger->trace( sub { return Dumper( [$request] ); } );
return $request;
}
# $self->_send_request($HTTP::Request)
# $self->_send_request(@params_to_make_request)
########################################################################
sub _send_request {
########################################################################
my ( $self, @args ) = @_;
$self->get_logger->trace(
sub {
return Dumper( [ 'REQUEST' => \@args ] );
},
);
my $request;
my $keep_root = $FALSE;
if ( @args == 1 && ref( $args[0] ) =~ /HTTP::Request/xsm ) {
$request = $args[0];
}
else {
if ( ref $args[0] ) {
$keep_root = delete $args[0]->{keep_root};
}
$request = $self->_make_request(@args);
}
lib/Amazon/S3.pm view on Meta::CPAN
#
# This is the necessary to find the region for a specific bucket
# and set the signer object to use that region when signing requests
########################################################################
sub adjust_region {
########################################################################
my ( $self, $bucket, $called_from_redirect ) = @_;
my $request
= HTTP::Request->new( 'GET', 'https://' . $bucket . $DOT . $self->host );
$self->{'signer'}->sign($request);
# We have to turn off our special retry since this will deliberately trigger that code
$self->turn_off_special_retry();
# If the bucket name has a period in it, the certificate validation
# will fail since it will expect a certificate for a subdomain.
# Setting it to verify against the expected host guards against
# that while still being secure since we will have verified
# the response as coming from the expected server.
lib/Amazon/S3.pm view on Meta::CPAN
=head2 error
The decoded XML string as a hash object of the last error.
=head2 last_response
Returns the last L<HTTP::Response> object.
=head2 last_request
Returns the last L<HTTP::Request> object.
=head2 level
Set the logging level.
default: error
=head2 turn_on_special_retry
Called to add extra retry codes if retry has been set
}
# see more docs in Amazon::S3::Bucket
# local test methods
########################################################################
sub is_request_response_code {
########################################################################
my ( $url, $code, $message ) = @_;
my $request = HTTP::Request->new( 'GET', $url );
my $response = $s3->ua->request($request);
is( $response->code, $code, $message )
or diag( Dumper( [ response_code => $response ] ) );
return;
}
########################################################################
( run in 0.426 second using v1.01-cache-2.11-cpan-de7293f3b23 )