CPAN-Testers-Metabase-AWS
view release on metacpan or search on metacpan
lib/CPAN/Testers/Metabase/AWS.pm view on Meta::CPAN
use strict;
use warnings;
package CPAN::Testers::Metabase::AWS;
# ABSTRACT: Metabase backend on Amazon Web Services
our $VERSION = '1.999002'; # VERSION
use Moose;
use Metabase::Archive::S3 1.000;
use Metabase::Index::SimpleDB 1.000;
use Metabase::Librarian 1.000;
use Net::Amazon::Config;
use namespace::autoclean;
with 'Metabase::Gateway';
has 'bucket' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'namespace' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'amazon_config' => (
is => 'ro',
isa => 'Net::Amazon::Config',
default => sub { return Net::Amazon::Config->new },
);
has 'profile_name' => (
is => 'ro',
isa => 'Str',
default => 'cpantesters'
);
has '_profile' => (
is => 'ro',
isa => 'Net::Amazon::Config::Profile',
lazy => 1,
builder => '_build__profile',
handles => [ qw/access_key_id secret_access_key/ ],
);
sub _build__profile {
my $self = shift;
return $self->amazon_config->get_profile( $self->profile_name );
}
sub _build_fact_classes { return [qw/CPAN::Testers::Report/] }
sub _build_public_librarian { return $_[0]->__build_librarian("public") }
sub _build_private_librarian { return $_[0]->__build_librarian("private") }
sub __build_librarian {
my ($self, $subspace) = @_;
my $bucket = $self->bucket;
my $namespace = $self->namespace;
my $s3_prefix = "metabase/${namespace}/${subspace}/";
my $sdb_domain = "${bucket}.metabase.${namespace}.${subspace}";
return Metabase::Librarian->new(
archive => Metabase::Archive::S3->new(
access_key_id => $self->access_key_id,
secret_access_key => $self->secret_access_key,
bucket => $self->bucket,
prefix => $s3_prefix,
( run in 0.882 second using v1.01-cache-2.11-cpan-5a3173703d6 )