Azure-Storage-Blob-Client
view release on metacpan or search on metacpan
"Test::Spec::Acceptance" : "0"
}
},
"runtime" : {
"requires" : {
"Data::Dumper" : "0",
"Digest::SHA" : "0",
"Encode" : "0",
"HTTP::Date" : "0",
"HTTP::Headers" : "0",
"HTTP::Request" : "0",
"HTTP::Response" : "0",
"HTTP::Tiny" : "0",
"LWP::UserAgent" : "0",
"MIME::Base64" : "0",
"Moose" : "0",
"Throwable::Error" : "0",
"XML::LibXML" : "0"
}
}
},
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: Azure-Storage-Blob-Client
requires:
Data::Dumper: '0'
Digest::SHA: '0'
Encode: '0'
HTTP::Date: '0'
HTTP::Headers: '0'
HTTP::Request: '0'
HTTP::Response: '0'
HTTP::Tiny: '0'
LWP::UserAgent: '0'
MIME::Base64: '0'
Moose: '0'
Throwable::Error: '0'
XML::LibXML: '0'
resources:
bugtracker: https://github.com/ureesoriano/Azure-Storage-Blob-Client/issues
repository: https://github.com/ureesoriano/Azure-Storage-Blob-Client
Makefile.PL view on Meta::CPAN
},
"DISTNAME" => "Azure-Storage-Blob-Client",
"LICENSE" => "apache",
"NAME" => "Azure::Storage::Blob::Client",
"PREREQ_PM" => {
"Data::Dumper" => 0,
"Digest::SHA" => 0,
"Encode" => 0,
"HTTP::Date" => 0,
"HTTP::Headers" => 0,
"HTTP::Request" => 0,
"HTTP::Response" => 0,
"HTTP::Tiny" => 0,
"LWP::UserAgent" => 0,
"MIME::Base64" => 0,
"Moose" => 0,
"Throwable::Error" => 0,
"XML::LibXML" => 0
},
"VERSION" => "0.05",
"test" => {
Makefile.PL view on Meta::CPAN
}
);
my %FallbackPrereqs = (
"Data::Dumper" => 0,
"Digest::SHA" => 0,
"Encode" => 0,
"HTTP::Date" => 0,
"HTTP::Headers" => 0,
"HTTP::Request" => 0,
"HTTP::Response" => 0,
"HTTP::Tiny" => 0,
"LWP::UserAgent" => 0,
"MIME::Base64" => 0,
"Moose" => 0,
"Throwable::Error" => 0,
"XML::LibXML" => 0
);
requires 'Data::Dumper';
requires 'Digest::SHA';
requires 'Encode';
requires 'HTTP::Date';
requires 'HTTP::Headers';
requires 'HTTP::Request';
requires 'HTTP::Response';
requires 'HTTP::Tiny';
requires 'LWP::UserAgent';
requires 'MIME::Base64';
requires 'Moose';
requires 'Throwable::Error';
requires 'XML::LibXML';
on develop => sub {
requires 'App::Prove::Watch';
lib/Azure/Storage/Blob/Client/Caller.pm view on Meta::CPAN
package Azure::Storage::Blob::Client::Caller;
use Moose;
use Data::Dumper;
use LWP::UserAgent;
use HTTP::Tiny;
use HTTP::Request;
use HTTP::Headers;
use HTTP::Date;
use Digest::SHA qw(hmac_sha256_base64);
use MIME::Base64;
use Encode;
use Azure::Storage::Blob::Client::Service::Signer;
use Azure::Storage::Blob::Client::Exception;
has user_agent => (
lib/Azure/Storage/Blob/Client/Caller.pm view on Meta::CPAN
my $url_encoded_parameters = HTTP::Tiny->new->www_form_urlencode(
$call_object->serialize_uri_parameters(),
);
my $url = $url_encoded_parameters
? sprintf("%s&%s", $call_object->endpoint, $url_encoded_parameters)
: $call_object->endpoint;
my $body = $self->_build_body_content($call_object);
my $headers = $self->_build_headers($call_object, $body);
my $request = HTTP::Request->new($call_object->method, $url, $headers, $body);
$self->_sign_request($request, $account_name, $account_key, $call_object);
return $request;
}
sub _handle_storage_account_api_exceptions {
my ($self, $response) = @_;
return unless ($response->code >= 400);
t/Azure/Storage/Blob/Client/Service/Signer.t view on Meta::CPAN
#!/usr/bin/env perl
use v5.10;
use strict;
use warnings;
use Test::Spec::Acceptance;
use Test::MockTime 'set_fixed_time', 'restore_time';
use HTTP::Request;
use HTTP::Headers;
use HTTP::Date;
use Encode;
use Azure::Storage::Blob::Client::Service::Signer;
Feature 'calculate_signature' => sub {
my ($request, $account_name, $account_key, $signature);
my $now = '2019-05-06T08:23:01Z'; # Signature is time-dependent
before all => sub { set_fixed_time($now) };
t/Azure/Storage/Blob/Client/Service/Signer.t view on Meta::CPAN
Scenario 'HTTP request with no body content' => sub {
# pre-calculated time-dependent signature
my $expected_signature = 'mnEgYCZthLSJ0jEjTtY4u8t/Ae+lyJMVmA2RR0EU2mI=';
Given 'an HTTP request with no body' => sub {
my $headers = HTTP::Headers->new(
'x-ms-version' => '2018-03-28',
'Date'=> HTTP::Date::time2str(),
);
$request = HTTP::Request->new('GET', 'example.com', $headers);
};
And 'a Storage Account \'account_name\' & \'account_key\'' => sub {
$account_name = 'enzimetestaccount';
$account_key = 'supersecretstorageaccountkey==';
};
When 'calculating the request signature' => sub {
my $signer = Azure::Storage::Blob::Client::Service::Signer->new();
$signature = $signer->calculate_signature($request, $account_name, $account_key);
t/Azure/Storage/Blob/Client/Service/Signer.t view on Meta::CPAN
# pre-calculated time-dependent signature
my $expected_signature = 'gyuJ97Kkk65kMFRNDXVDkbdxNLnheamLBgbikxpQJlc=';
Given 'an HTTP request with body content' => sub {
my $body = '42';
my $headers = HTTP::Headers->new(
'x-ms-version' => '2018-03-28',
'Date'=> HTTP::Date::time2str(),
'Content-Length' => length(Encode::encode_utf8($body)),
);
$request = HTTP::Request->new('POST', 'example.com', $headers, $body);
};
And 'a Storage Account \'account_name\' & \'account_key\'' => sub {
$account_name = 'enzimetestaccount';
$account_key = 'supersecretstorageaccountkey==';
};
When 'calculating the request signature' => sub {
my $signer = Azure::Storage::Blob::Client::Service::Signer->new();
$signature = $signer->calculate_signature($request, $account_name, $account_key);
( run in 1.205 second using v1.01-cache-2.11-cpan-de7293f3b23 )