Azure-Storage-Blob-Client

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "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.yml  view on Meta::CPAN

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
);


cpanfile  view on Meta::CPAN

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 )