Furl-S3
view release on metacpan or search on metacpan
README.mkdn view on Meta::CPAN
AWS Access Key ID
- aws_secret_access_key
AWS Secret Access Key.
- secure
boolean flag. uses SSL connection or not.
- endpoint
S3 endpoint hostname. the default value is _s3.amazonaws.com_
other parmeters are passed to Furl->new. see [Furl](http://search.cpan.org/perldoc?Furl) documents.
## list_buckets
list all buckets.
returns a HASH-REF
{
'owner' => {
lib/Furl/S3.pm view on Meta::CPAN
use MIME::Base64 qw(encode_base64);
use HTTP::Date;
use Data::Dumper;
use XML::LibXML;
use XML::LibXML::XPathContext;
use Furl::S3::Error;
use Params::Validate qw(:types validate_with validate_pos);
use URI::Escape qw(uri_escape_utf8);
use Carp ();
Class::Accessor::Lite->mk_accessors(qw(aws_access_key_id aws_secret_access_key secure furl endpoint));
our $VERSION = '0.02';
our $DEFAULT_ENDPOINT = 's3.amazonaws.com';
our $XMLNS = 'http://s3.amazonaws.com/doc/2006-03-01/';
sub new {
my $class = shift;
validate_with(
params => \@_,
spec => {
aws_access_key_id => 1,
aws_secret_access_key => 1,
},
allow_extra => 1,
);
my %args = @_;
my $aws_access_key_id = delete $args{aws_access_key_id};
my $aws_secret_access_key = delete $args{aws_secret_access_key};
Carp::croak("aws_access_key_id and aws_secret_access_key are mandatory") unless $aws_access_key_id && $aws_secret_access_key;
my $secure = delete $args{secure} || '0';
my $endpoint = delete $args{endpoint} || $DEFAULT_ENDPOINT;
my $furl = Furl::HTTP->new(
agent => '$class/'. $VERSION,
%args,
header_format => HEADERS_AS_HASHREF,
);
my $self = bless {
endpoint => $endpoint,
secure => $secure,
aws_access_key_id => $aws_access_key_id,
aws_secret_access_key => $aws_secret_access_key,
furl => $furl,
}, $class;
$self;
}
sub _trim {
my $str = shift;
lib/Furl/S3.pm view on Meta::CPAN
join('&', map { $_. '='. uri_escape_utf8( $q->{$_} ) } keys %{$q}) : $q;
$path .= '?'. $qs if $qs;
$path;
}
sub host_and_path_query {
my( $self, $bucket, $key, $params ) = @_;
my($host, $path_query);
$key = _normalize_key($key);
if ( is_dns_style($bucket) ) {
$host = join '.', $bucket, $self->endpoint;
$path_query = $self->_path_query( $key, $params );
}
else {
$host = $self->endpoint;
$path_query = $self->_path_query( join('/', $bucket, $key), $params );
}
$path_query =~ s{//}{/}g;
return ($host, $path_query);
}
sub request {
my $self = shift;
my( $method, $bucket, $key, $params, $headers, $furl_options ) = @_;
validate_pos( @_, 1, 1,
lib/Furl/S3.pm view on Meta::CPAN
AWS Access Key ID
=item aws_secret_access_key
AWS Secret Access Key.
=item secure
boolean flag. uses SSL connection or not.
=item endpoint
S3 endpoint hostname. the default value is I<s3.amazonaws.com>
other parmeters are passed to Furl->new. see L<Furl> documents.
=back
=head2 request($method, $bucket, [ $key ], [ \%params ], [ \%headers ], [ \%furl_options ]);
sends signed request. returns a Furl::Response object.
=over
( run in 0.241 second using v1.01-cache-2.11-cpan-beeb90c9504 )