Amazon-S3

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

## 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 = $AWS_METADATA_BASE_URL . '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

        $bucket, $host, $path, $port, $EVAL_ERROR

        if !$url || $EVAL_ERROR;
    }
    else {
      $url = sprintf '%s://%s.%s%s%s', $protocol, $bucket, $host, $path,
        $query_string;
    }
  }

  my $request = HTTP::Request->new( $method, $url, $http_headers );

  $self->last_request($request);

  if ($data) {
    $request->content($data);
  }

  $self->signer->region($region); # always set regional endpoint for signing

  $self->signer->sign($request);

  return $request;
}

# $self->_send_request($HTTP::Request)
# $self->_send_request(@params_to_make_request)
# $self->_send_request($params_to_make_request)
########################################################################
sub _send_request {
########################################################################
  my ( $self, @args ) = @_;

  my $logger = $self->get_logger;

  $logger->trace(
    sub {
      return Dumper( [ args => \@args ] );
    },
  );

  my $keep_root = $FALSE;

  my $request = eval {
    return $args[0]
      if ref( $args[0] ) =~ /HTTP::Request/xsm;

    return {@args}
      if @args > 1 && !@args % 2;

    return $args[0]
      if ref $args[0];

    croak 'invalid argument to _send_request';
  };

  if ( ref($request) !~ /HTTP::Request/xsm ) {
    $keep_root = delete $request->{keep_root};

    $request = $self->_make_request($request);
  }

  my $response = $self->_do_http($request);

  $self->last_response($response);

  $logger->debug(

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 $url = sprintf 'https://%s.%s', $bucket, $self->host;

  my $request = HTTP::Request->new( GET => $url );

  $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

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

t/01-api.t  view on Meta::CPAN

}

# 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 2.033 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )