# NAME
Azure::Storage::Blob::Client - Azure Storage Services Blob API client

# SYNOPSIS
```
my $client = Azure::Storage::Blob::Client->new(
  account_name => $storage_account_name,
  account_key => $storage_account_key,
  api_version => '2018-03-28',
);

my $blobs = $client->ListBlobs(
  container => $container,
  prefix => $blob_prefix,
  # Makes the client transparently issue additional requests to retrieve
  # paginated results under the hood
  auto_retrieve_paginated_results => 1,
);

my $blob_properties = $client->GetBlobProperties(
  container => $container_name,
  blob_name => $blob_name,
);

$client->PutBlob(
  container => $container_name,
  blob_type => 'BlockBlob',
  blob_name => $blob_name,
  content => $content,
);

$client->DeleteBlob(
  container => $container_name,
  blob_name => $blob_name,
);
```

# DESCRIPTION
This distribution provides a client for the Blob API of the Azure Storage Services.

Azure Storage Services is composed of 4 APIs:
* Blob service API
* File service API
* Queue service API
* Table service API

(More info on Azure's docs: https://docs.microsoft.com/en-us/rest/api/storageservices/)
Azure::Storage::Blob::Client is a client solely for the Blob API.

# CURRENT STATE OF DEVELOPMENT
Azure::Storage::Blob::Client is a partial implementation of the Azure Storage Blob API.
Implementing not-yet-supported API calls should be very straightforward though, as all the necessary scaffolding is in place.

PRs contributing the implementation of not-yet-supported API calls are more than welcome :)

(For a complete list of the Blob API calls, check the documentation: https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api)

# METHODS

### Constructor
Returns a new instance of Azure::Storage::Blob::Client.
```
my $client = Azure::Storage::Blob::Client->new(
  account_name => $storage_account_name,
  account_key => $storage_account_key,
  api_version => '2018-03-28',
);
```

### ListBlobs
Lists all of the blobs in a container.
```
my $blobs = $client->ListBlobs(
  container => $container,
  prefix => $blob_prefix,
  auto_retrieve_paginated_results => 1,
);
```
**auto_retrieve_paginated_results**: When enabled, the client will transparently issue additional requests to retrieve paginated results under the hood.

### GetBlobProperties
Returns all system properties and user-defined metadata on the blob.
```
my $blob_properties = $client->GetBlobProperties(
  container => $container_name,
  blob_name => $blob_name,
);
```
### PutBlob
Creates a new block to be committed as part of a block blob.
```
$client->PutBlob(
  container => $container_name,
  blob_type => 'BlockBlob',
  blob_name => $blob_name,
  content => $content,
);
```

### Delete Blob
Marks a blob for deletion.
```
$client->DeleteBlob(
  container => $container_name,
  blob_name => $blob_name,
);
```

# Contributors && Kudos:
* Alexandr Ciornii (@chorny): For pointing out build dependencies were being installed for end-users.

# AUTHOR
```
Oriol Soriano
oriol.soriano@capside.com
```

# COPYRIGHT
Copyright (c) 2019 by CAPSiDE.

# LICENSE
This code is distributed under the Apache 2 License. The full text of the license can be found in the LICENSE file included with this module.