view release on metacpan or search on metacpan
inc/Module/Install/Win32.pm view on Meta::CPAN
$self->load('get_file');
require Config;
return unless (
$^O eq 'MSWin32' and
$Config::Config{make} and
$Config::Config{make} =~ /^nmake\b/i and
! $self->can_run('nmake')
);
print "The required 'nmake' executable not found, fetching it...\n";
require File::Basename;
my $rv = $self->get_file(
url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
local_dir => File::Basename::dirname($^X),
size => 51928,
run => 'Nmake15.exe /o > nul',
check_for => 'Nmake.exe',
remove => 1,
lib/AWS/CloudFront.pm view on Meta::CPAN
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);
lib/AWS/CloudFront/CustomOrigin.pm view on Meta::CPAN
package S3::CloudFront::CustomOrigin;
use VSO;
use Data::Validate::Domain 'is_domain';
has 'DNSName' => (
is => 'ro',
isa => 'Str',
required => 1,
where => sub {
is_domain($_, { do_allow_underscore => 1 })
}
);
has 'HTTPPort' => (
is => 'ro',
isa => 'Int',
required => 0,
default => sub { 80 },
where => sub {
$_ == 80 ||
$_ == 443 ||
(
$_ >= 1024 &&
$_ <= 65535
)
}
);
has 'HTTPSPort' => (
is => 'ro',
isa => 'Int',
required => 0,
default => sub { 443 },
where => sub {
$_ == 80 ||
$_ == 443 ||
(
$_ >= 1024 &&
$_ <= 65535
)
}
);
has 'OriginProtocolPolicy' => (
is => 'ro',
isa => 'Str',
required => 0,
where => sub {
$_ =~ m{^(http-only|match-viewer)$}
}
);
1;# return true:
lib/AWS/CloudFront/Distribution.pm view on Meta::CPAN
package AWS::CloudFront::Distribution;
use VSO;
use AWS::CloudFront::OriginAccessIdentity;
has 'cf' => (
is => 'ro',
isa => 'AWS::CloudFront',
required => 1,
);
has 'Id' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'Status' => (
is => 'ro',
isa => 'Str',
required => 1,
where => sub {
m{^(?:Deployed|InProgress)$}
}
);
has 'LastModifiedTime' => (
is => 'ro',
isa => 'Maybe[Str]',
where => sub {
# eg: 2011-05-05T21:11:39.546Z
m{^(?:\d\d\d\d-\d\d-\d\dT\d+:\d\d:\d\d\.\d+Z)$}
}
);
has 'InProgressValidationBatches' => (
is => 'ro',
isa => 'Int',
required => 0,
default => sub { 0 }
);
has 'DomainName' => (
is => 'rw',
isa => 'Str',
required => 1,
);
has 'ActiveTrustedSigners' => (
is => 'ro',
isa => 'ArrayRef[AWS::CloudFront::ActiveTrustedSigner]',
required => 0,
);
has 'Origin' => (
is => 'ro',
isa => 'AWS::CloudFront::S3Origin|AWS::CloudFront::CustomOrigin',
required => 1,
);
has 'CallerReference' => (
is => 'ro',
isa => 'Str',
required => 1,
lazy => 1,
default => sub {
my $s = shift;
$s->cf->distribution( Id => $s->Id )->CallerReference
},
);
has 'CNAME' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'Comment' => (
is => 'ro',
isa => 'Str',
required => 0,
);
has 'Enabled' => (
is => 'rw',
isa => 'Bool',
required => 1,
);
has 'DefaultRootObject' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'Logging' => (
is => 'ro',
isa => 'AWS::CloudFront::Logging',
required => 0,
);
has 'TrustedSigners' => (
is => 'ro',
isa => 'ArrayRef[AWS::CloudFront::TrustedSigner]',
required => 0,
);
has 'OriginAccessIdentity' => (
is => 'ro',
isa => 'Maybe[AWS::CloudFront::OriginAccessIdentity]',
required => 0,
lazy => 1,
default => sub {
my $s = shift;
foreach my $ident ( $s->cf->origin_access_identities )
{
}# end foreach()
}
);
lib/AWS/CloudFront/DistributionConfig.pm view on Meta::CPAN
package AWS::CloudFront::DistributionConfig;
use VSO;
use Data::Validate::Domain 'is_domain';
has 'S3Origin' => (
is => 'ro',
isa => 'AWS::CloudFront::S3Origin',
required => 0,
);
has 'CustomOrigin' => (
is => 'ro',
isa => 'AWS::CloudFront::CustomOrigin',
required => 0,
);
has 'CallerReference' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'CNAME' => (
is => 'rw',
isa => 'Str',
required => 0,
where => sub {
is_domain($_, {do_allow_underscore => 1})
}
);
has 'Comment' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'Enabled' => (
is => 'rw',
isa => 'Str',
required => 1,
where => sub {
$_ =~ m{^(true|false)$}
}
);
has 'DefaultRootObject' => (
is => 'ro',
isa => 'Str',
required => 0,
where => sub {
(! defined $_) ||
(! length $_) ||
$_ =~ m{^([
a-z
A-Z
0-9
_\-\.\*\$\/\~"'\&
|\&
]+)$}x;
}
);
has 'Logging' => (
is => 'ro',
isa => 'AWS::CloudFront::Logging',
required => 0,
);
has 'TrustedSigners' => (
is => 'ro',
isa => 'AWS::CloudFront::TrustedSigners',
required => 0,
);
has 'RequiredProtocols' => (
is => 'ro',
isa => 'AWS::CloudFront::RequiredProtocols',
required => 0,
);
sub BUILD
{
my $s = shift;
die 'Must specify either an S3Origin or a CustomOrigin.'
unless $s->S3Origin || $s->CustomOrigin;
die 'You cannot use both S3Origin and CustomOrigin in the same distribution.'
if $s->S3Origin && $s->CustomOrigin;
lib/AWS/CloudFront/Logging.pm view on Meta::CPAN
use VSO;
subtype 'AWS::CloudFront::Logging::Prefix'
=> as 'Str'
=> where { length($_) <= 256 && $_ !~ m{^/} && $_ =~ m{/$} }
=> message { "length <= 256, can't start with '/' and must end with '/'" }
has 'Bucket' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'Prefix' => (
is => 'ro',
isa => 'Maybe[AWS::CloudFront::Logging::Prefix]',
);
1;# return true:
lib/AWS/CloudFront/OriginAccessIdentity.pm view on Meta::CPAN
package
AWS::CloudFront::OriginAccessIdentity;
use VSO;
has 'CallerReference' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'Comment' => (
is => 'ro',
isa => 'Str',
required => 0,
default => sub { '' },
);
has 'Location' => (
is => 'ro',
isa => 'Str',
required => 0,
);
has 'Id' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'S3CanonicalUserId' => (
is => 'ro',
isa => 'Str',
required => 1,
);
1;# return true:
lib/AWS/CloudFront/Request.pm view on Meta::CPAN
package
AWS::CloudFront::Request;
use VSO;
use HTTP::Request;
use AWS::CloudFront::ResponseParser;
has 'cf' => (
is => 'ro',
isa => 'AWS::CloudFront',
required => 1,
);
has 'type' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'protocol' => (
is => 'ro',
isa => 'Str',
lazy => 1,
default => sub { 'https' }
);
lib/AWS/CloudFront/Request/CreateDistribution.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser;
use Time::HiRes 'gettimeofday';
extends 'AWS::CloudFront::Request';
has 'Origin' => (
is => 'ro',
isa => 'AWS::CloudFront::S3Origin|AWS::CloudFront::CustomOrigin',
required => 1,
);
has 'CallerReference' => (
is => 'ro',
isa => 'Str',
required => 0,
lazy => 1,
default => sub { gettimeofday() },
);
has 'Logging' => (
is => 'ro',
isa => 'AWS::CloudFront::Logging',
required => 0,
);
has 'CNAME' => (
is => 'ro',
isa => 'Str',
required => 0,
);
has 'Comment' => (
is => 'ro',
isa => 'Str',
required => 0,
default => sub { '' }
);
has 'Enabled' => (
is => 'ro',
isa => 'Bool',
required => 0,
default => sub { 1 },
);
has 'DefaultRootObject' => (
is => 'ro',
isa => 'Str',
required => 0,
);
sub request
{
my $s = shift;
my $uri = 'https://cloudfront.amazonaws.com/2010-11-01/distribution';
my $xml = <<"XML";
lib/AWS/CloudFront/Request/CreateOriginAccessIdentity.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser;
extends 'AWS::CloudFront::Request';
has 'CallerReference' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'Comment' => (
is => 'ro',
isa => 'Str',
required => 0,
default => sub { '' },
);
sub request
{
my $s = shift;
my $uri = 'https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront';
lib/AWS/CloudFront/Request/DeleteDistribution.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser
extends 'AWS::CloudFront::Request';
has 'Id' => (
is => 'ro',
isa => 'Str',
required => 1,
);
sub request
{
my $s = shift;
# First get the etag:
my $etag = (sub{
my $uri = 'https://cloudfront.amazonaws.com/2010-11-01/distribution/' . $s->Id;
lib/AWS/CloudFront/Request/GetDistribution.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser;
extends 'AWS::CloudFront::Request';
has 'Id' => (
is => 'ro',
isa => 'Str',
required => 1,
);
sub request
{
my $s = shift;
my $uri = 'https://cloudfront.amazonaws.com/2010-11-01/distribution/' . $s->Id;
my $signer = AWS::CloudFront::Signer->new(
cf => $s->cf,
lib/AWS/CloudFront/Request/GetOriginAccessIdentity.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser;
extends 'AWS::CloudFront::Request';
has 'Id' => (
is => 'ro',
isa => 'Str',
required => 1,
);
sub request
{
my $s = shift;
my $uri = 'https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront/' . $s->Id;
my $signer = AWS::CloudFront::Signer->new(
cf => $s->cf,
lib/AWS/CloudFront/Request/GetOriginAccessIdentityList.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser;
extends 'AWS::CloudFront::Request';
has 'Marker' => (
is => 'ro',
isa => 'Str',
required => 0,
);
has 'MaxItems' => (
is => 'ro',
isa => 'Int',
required => 0,
);
sub request
{
my $s = shift;
my $uri = 'https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront';
my @params = ( );
push @params, 'Marker=' . $s->Marker if defined $s->Marker;
lib/AWS/CloudFront/Request/UpdateDistribution.pm view on Meta::CPAN
use VSO;
use AWS::CloudFront::Signer;
use AWS::CloudFront::ResponseParser;
extends 'AWS::CloudFront::Request';
has 'Distribution' => (
is => 'ro',
isa => 'AWS::CloudFront::Distribution',
required => 1,
);
sub d { shift->Distribution }
sub request
{
my $s = shift;
# First get the etag:
lib/AWS/CloudFront/ResponseParser.pm view on Meta::CPAN
package
AWS::CloudFront::ResponseParser;
use VSO;
use XML::Simple;
has 'expect_nothing' => (
is => 'ro',
isa => 'Int',
required => 1,
default => sub { 0 }
);
has 'response' => (
is => 'ro',
isa => 'HTTP::Response',
required => 1,
);
has 'type' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'libxml' => (
is => 'ro',
isa => 'XML::LibXML',
required => 1,
default => sub { XML::LibXML->new() },
);
has 'error_code' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'error_message' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'xpc' => (
is => 'ro',
isa => 'XML::LibXML::XPathContext',
required => 0,
);
has 'friendly_error' => (
is => 'ro',
isa => 'Str',
required => 0,
default => sub {
my $s = shift;
return unless $s->error_code || $s->error_message;
$s->type . " call had errors: [" . $s->error_code . "] " . $s->error_message;
}
);
sub BUILD
{
lib/AWS/CloudFront/S3Origin.pm view on Meta::CPAN
package AWS::CloudFront::S3Origin;
use VSO;
has 'DNSName' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'OriginAccessIdentity' => (
is => 'ro',
isa => 'Str',
required => 0,
);
1;# return true:
lib/AWS/CloudFront/Signer.pm view on Meta::CPAN
use Encode;
my $METADATA_PREFIX = 'x-amz-meta-';
my $AMAZON_HEADER_PREFIX = 'x-amz-';
enum 'AWS::CloudFront::HTTPMethod' => [qw( HEAD GET PUT POST DELETE )];
has 'cf' => (
is => 'ro',
isa => 'AWS::CloudFront',
required => 1,
);
has 'date' => (
is => 'ro',
isa => 'Str',
required => 1,
default => sub {
time2str(time)
}
);
has 'signature' => (
is => 'ro',
isa => 'Str',
required => 1,
lazy => 1,
default => sub {
my $s = shift;
encode_base64(hmac_sha1($s->date, $s->cf->secret_access_key));
}
);
sub auth_header
{