AWS-CloudFront
view release on metacpan or search on metacpan
lib/AWS/CloudFront.pm view on Meta::CPAN
package AWS::CloudFront;
use VSO;
use LWP::UserAgent;
use Carp 'confess';
use HTTP::Response;
use IO::Socket::INET;
use Class::Load 'load_class';
use AWS::CloudFront::Distribution;
use AWS::CloudFront::S3Origin;
use AWS::CloudFront::CustomOrigin;
use AWS::CloudFront::OriginAccessIdentity;
our $VERSION = '0.003';
has 'access_key_id' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'secret_access_key' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'ua' => (
is => 'ro',
isa => 'LWP::UserAgent',
lazy => 1,
required => 0,
default => sub { LWP::UserAgent->new( agent => 'foo/bar v1.2' ) }
);
sub request
{
my ($s, $type, %args) = @_;
my $class = "AWS::CloudFront::Request::$type";
load_class($class);
return $class->new( %args, cf => $s, type => $type );
}# end request()
sub distribution
{
my ($s, %args) = @_;
my $type = 'GetDistribution';
my $response = $s->request( $type, %args )->request();
my $xpc = $response->xpc;
if( my ($node) = $xpc->findnodes('.//cf:Distribution') )
{
my $origin;
if( my ($origin_s3) = $xpc->findnodes('.//cf:S3Origin', $node) )
{
$origin = AWS::CloudFront::S3Origin->new(
OriginAccessIdentity => $xpc->findvalue('.//cf:OriginAccessIdentity', $origin_s3),
DNSName => $xpc->findvalue('.//cf:DNSName', $origin_s3),
);
}
elsif( my $origin_custom = $xpc->findnode('.//cf:CustomOrigin', $node) )
{
}# end if()
my $dist = AWS::CloudFront::Distribution->new(
cf => $s,
Id => $xpc->findvalue('.//cf:Id', $node),
Status => $xpc->findvalue('.//cf:Status', $node),
LastModifiedTime => $xpc->findvalue('.//cf:LastModifiedTime', $node),
DomainName => $xpc->findvalue('.//cf:DomainName', $node),
Enabled => $xpc->findvalue('.//cf:Enabled') eq 'true' ? 1 : 0,
DefaultRootObject => $xpc->findvalue('.//cf:DefaultRootObject') || undef,
CNAME => $xpc->findvalue('.//cf:CNAME') || undef,
InProgressValidationBatches => $xpc->findvalue('.//cf:InProgressValidationBatches') || undef,
Comment => $xpc->findvalue('.//cf:Comment') || undef,
CallerReference => $xpc->findvalue('.//cf:CallerReference') || undef,
Origin => $origin,
# TODO: Logging, ActiveTrustedSigners.
( run in 2.055 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )