azure-storage-blobs
blob_container_client.hpp
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
6 #include <cstdint>
7 #include <memory>
8 #include <string>
9 
10 #include "azure/storage/blobs/blob_client.hpp"
11 
12 namespace Azure { namespace Storage { namespace Blobs {
13 
14  class BlobLeaseClient;
15 
20  class BlobContainerClient final {
21  public:
33  const std::string& connectionString,
34  const std::string& blobContainerName,
35  const BlobClientOptions& options = BlobClientOptions());
36 
48  explicit BlobContainerClient(
49  const std::string& blobContainerUrl,
50  std::shared_ptr<StorageSharedKeyCredential> credential,
51  const BlobClientOptions& options = BlobClientOptions());
52 
63  explicit BlobContainerClient(
64  const std::string& blobContainerUrl,
65  std::shared_ptr<Core::Credentials::TokenCredential> credential,
66  const BlobClientOptions& options = BlobClientOptions());
67 
78  explicit BlobContainerClient(
79  const std::string& blobContainerUrl,
80  const BlobClientOptions& options = BlobClientOptions());
81 
89  BlobClient GetBlobClient(const std::string& blobName) const;
90 
98  BlockBlobClient GetBlockBlobClient(const std::string& blobName) const;
99 
107  AppendBlobClient GetAppendBlobClient(const std::string& blobName) const;
108 
116  PageBlobClient GetPageBlobClient(const std::string& blobName) const;
117 
124  std::string GetUrl() const { return m_blobContainerUrl.GetAbsoluteUrl(); }
125 
134  Azure::Response<Models::CreateBlobContainerResult> Create(
136  const Azure::Core::Context& context = Azure::Core::Context()) const;
137 
148  Azure::Response<Models::CreateBlobContainerResult> CreateIfNotExists(
150  const Azure::Core::Context& context = Azure::Core::Context()) const;
151 
160  Azure::Response<Models::DeleteBlobContainerResult> Delete(
162  const Azure::Core::Context& context = Azure::Core::Context()) const;
163 
173  Azure::Response<Models::DeleteBlobContainerResult> DeleteIfExists(
175  const Azure::Core::Context& context = Azure::Core::Context()) const;
176 
185  Azure::Response<Models::BlobContainerProperties> GetProperties(
187  const Azure::Core::Context& context = Azure::Core::Context()) const;
188 
197  Azure::Response<Models::SetBlobContainerMetadataResult> SetMetadata(
198  Metadata metadata,
200  const Azure::Core::Context& context = Azure::Core::Context()) const;
201 
212  const ListBlobsOptions& options = ListBlobsOptions(),
213  const Azure::Core::Context& context = Azure::Core::Context()) const;
214 
228  const std::string& delimiter,
229  const ListBlobsOptions& options = ListBlobsOptions(),
230  const Azure::Core::Context& context = Azure::Core::Context()) const;
231 
240  Azure::Response<Models::BlobContainerAccessPolicy> GetAccessPolicy(
242  const Azure::Core::Context& context = Azure::Core::Context()) const;
243 
252  Azure::Response<Models::SetBlobContainerAccessPolicyResult> SetAccessPolicy(
254  const Azure::Core::Context& context = Azure::Core::Context()) const;
255 
266  Azure::Response<Models::DeleteBlobResult> DeleteBlob(
267  const std::string& blobName,
268  const DeleteBlobOptions& options = DeleteBlobOptions(),
269  const Azure::Core::Context& context = Azure::Core::Context()) const;
270 
282  Azure::Response<BlockBlobClient> UploadBlob(
283  const std::string& blobName,
284  Azure::Core::IO::BodyStream& content,
286  const Azure::Core::Context& context = Azure::Core::Context()) const;
287 
288  private:
289  Azure::Core::Url m_blobContainerUrl;
290  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> m_pipeline;
291  Azure::Nullable<EncryptionKey> m_customerProvidedKey;
292  Azure::Nullable<std::string> m_encryptionScope;
293 
294  explicit BlobContainerClient(
295  Azure::Core::Url blobContainerUrl,
296  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> pipeline,
297  Azure::Nullable<EncryptionKey> customerProvidedKey,
298  Azure::Nullable<std::string> encryptionScope)
299  : m_blobContainerUrl(std::move(blobContainerUrl)), m_pipeline(std::move(pipeline)),
300  m_customerProvidedKey(std::move(customerProvidedKey)),
301  m_encryptionScope(std::move(encryptionScope))
302  {
303  }
304 
305  friend class BlobServiceClient;
306  friend class BlobLeaseClient;
307  };
308 
309 }}} // namespace Azure::Storage::Blobs
Azure::Storage::Blobs::BlobContainerClient::CreateIfNotExists
Azure::Response< Models::CreateBlobContainerResult > CreateIfNotExists(const CreateBlobContainerOptions &options=CreateBlobContainerOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a new container under the specified account. If the container with the same name already exis...
Definition: blob_container_client.cpp:151
Azure::Storage::Blobs::SetBlobContainerAccessPolicyOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::SetAccessPolicy.
Definition: blob_options.hpp:375
Azure::Storage::Blobs::BlobClient
The BlobClient allows you to manipulate Azure Storage blobs.
Definition: blob_client.hpp:34
Azure::Storage::Blobs::BlobContainerClient
Definition: blob_container_client.hpp:20
Azure::Storage::Blobs::SetBlobContainerMetadataOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::SetMetadata.
Definition: blob_options.hpp:313
Azure::Storage::Blobs::BlobContainerClient::DeleteBlob
Azure::Response< Models::DeleteBlobResult > DeleteBlob(const std::string &blobName, const DeleteBlobOptions &options=DeleteBlobOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Marks the specified blob or snapshot for deletion. The blob is later deleted during garbage collectio...
Definition: blob_container_client.cpp:362
Azure::Storage::Blobs::BlobContainerClient::UploadBlob
Azure::Response< BlockBlobClient > UploadBlob(const std::string &blobName, Azure::Core::IO::BodyStream &content, const UploadBlockBlobOptions &options=UploadBlockBlobOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a new block blob under this container. For partial block blob updates and other advanced feat...
Definition: blob_container_client.cpp:371
Azure::Storage::Blobs::UploadBlockBlobOptions
Optional parameters for Azure::Storage::Blobs::BlockBlobClient::Upload.
Definition: blob_options.hpp:683
Azure::Storage::Blobs::BlobContainerClient::Create
Azure::Response< Models::CreateBlobContainerResult > Create(const CreateBlobContainerOptions &options=CreateBlobContainerOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a new container under the specified account. If the container with the same name already exis...
Definition: blob_container_client.cpp:138
Azure::Storage::Blobs::BlobContainerClient::SetMetadata
Azure::Response< Models::SetBlobContainerMetadataResult > SetMetadata(Metadata metadata, SetBlobContainerMetadataOptions options=SetBlobContainerMetadataOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets one or more user-defined name-value pairs for the specified container.
Definition: blob_container_client.cpp:220
Azure::Storage::Blobs::ListBlobsOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::ListBlobs and Azure::Storage::Blo...
Definition: blob_options.hpp:332
Azure::Storage::Blobs::BlobContainerClient::SetAccessPolicy
Azure::Response< Models::SetBlobContainerAccessPolicyResult > SetAccessPolicy(const SetBlobContainerAccessPolicyOptions &options=SetBlobContainerAccessPolicyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the permissions for the specified container. The permissions indicate whether blob container dat...
Definition: blob_container_client.cpp:347
Azure::Storage::Blobs::PageBlobClient
Definition: page_blob_client.hpp:23
Azure::Storage::Blobs::BlobContainerClient::Delete
Azure::Response< Models::DeleteBlobContainerResult > Delete(const DeleteBlobContainerOptions &options=DeleteBlobContainerOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Marks the specified container for deletion. The container and any blobs contained within it are later...
Definition: blob_container_client.cpp:173
Azure::Storage::Blobs::BlobClientOptions
Client options used to initialize all kinds of blob clients.
Definition: blob_options.hpp:135
Azure::Storage::Blobs::ListBlobsPagedResponse
Response type for Azure::Storage::Blobs::BlobContainerClient::ListBlobs.
Definition: blob_responses.hpp:273
Azure::Storage::Blobs::DeleteBlobContainerOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::Delete.
Definition: blob_options.hpp:284
Azure::Storage::Blobs::BlobContainerClient::BlobContainerClient
BlobContainerClient(const std::string &blobContainerUrl, std::shared_ptr< StorageSharedKeyCredential > credential, const BlobClientOptions &options=BlobClientOptions())
Initialize a new instance of BlobContainerClient.
Definition: blob_container_client.cpp:42
Azure::Storage::Blobs::GetBlobContainerAccessPolicyOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::GetAccessPolicy.
Definition: blob_options.hpp:364
Azure::Storage::Blobs::BlobContainerClient::DeleteIfExists
Azure::Response< Models::DeleteBlobContainerResult > DeleteIfExists(const DeleteBlobContainerOptions &options=DeleteBlobContainerOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Marks the specified container for deletion if it exists. The container and any blobs contained within...
Definition: blob_container_client.cpp:185
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse
Response type for #Azure::Storage::Blobs::BlobContainerClient::ByHierarchy.
Definition: blob_responses.hpp:309
Azure::Storage::Blobs::BlobContainerClient::GetPageBlobClient
PageBlobClient GetPageBlobClient(const std::string &blobName) const
Create a new PageBlobClient object by appending blobName to the end of URL. The new PageBlobClient us...
Definition: blob_container_client.cpp:133
Azure::Storage::Blobs::BlobContainerClient::GetUrl
std::string GetUrl() const
Gets the container's primary URL endpoint.
Definition: blob_container_client.hpp:124
Azure::Storage::Blobs::DeleteBlobOptions
Optional parameters for Azure::Storage::Blobs::BlobClient::Delete.
Definition: blob_options.hpp:572
Azure::Storage::Blobs::BlobContainerClient::GetAccessPolicy
Azure::Response< Models::BlobContainerAccessPolicy > GetAccessPolicy(const GetBlobContainerAccessPolicyOptions &options=GetBlobContainerAccessPolicyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the permissions for this container. The permissions indicate whether container data may be acces...
Definition: blob_container_client.cpp:333
Azure::Storage::Blobs::GetBlobContainerPropertiesOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::GetProperties.
Definition: blob_options.hpp:302
Azure::Storage::Blobs::BlobContainerClient::GetBlockBlobClient
BlockBlobClient GetBlockBlobClient(const std::string &blobName) const
Create a new BlockBlobClient object by appending blobName to the end of URL. The new BlockBlobClient ...
Definition: blob_container_client.cpp:123
Azure::Storage::Blobs::BlobContainerClient::GetBlobClient
BlobClient GetBlobClient(const std::string &blobName) const
Create a new BlobClient object by appending blobName to the end of URL. The new BlobClient uses the s...
Definition: blob_container_client.cpp:116
Azure::Storage::Blobs::BlobContainerClient::ListBlobsByHierarchy
ListBlobsByHierarchyPagedResponse ListBlobsByHierarchy(const std::string &delimiter, const ListBlobsOptions &options=ListBlobsOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns a collection of blobs in this container. Enumerating the blobs may make multiple requests to ...
Definition: blob_container_client.cpp:280
Azure::Storage::Blobs::BlockBlobClient
The BlockBlobClient allows you to manipulate Azure Storage block blobs.
Definition: block_blob_client.hpp:31
Azure::Storage::Blobs::AppendBlobClient
The AppendBlobClient allows you to manipulate Azure Storage append blobs.
Definition: append_blob_client.hpp:21
Azure::Storage::Blobs::BlobContainerClient::ListBlobs
ListBlobsPagedResponse ListBlobs(const ListBlobsOptions &options=ListBlobsOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns a sequence of blobs in this container. Enumerating the blobs may make multiple requests to th...
Definition: blob_container_client.cpp:233
Azure::Storage::Blobs::BlobContainerClient::GetProperties
Azure::Response< Models::BlobContainerProperties > GetProperties(const GetBlobContainerPropertiesOptions &options=GetBlobContainerPropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns all user-defined metadata and system properties for the specified container....
Definition: blob_container_client.cpp:207
Azure::Storage::Blobs::BlobContainerClient::CreateFromConnectionString
static BlobContainerClient CreateFromConnectionString(const std::string &connectionString, const std::string &blobContainerName, const BlobClientOptions &options=BlobClientOptions())
Initialize a new instance of BlobContainerClient.
Definition: blob_container_client.cpp:22
Azure::Storage::Blobs::BlobContainerClient::GetAppendBlobClient
AppendBlobClient GetAppendBlobClient(const std::string &blobName) const
Create a new AppendBlobClient object by appending blobName to the end of URL. The new AppendBlobClien...
Definition: blob_container_client.cpp:128
Azure::Storage::Blobs::CreateBlobContainerOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::Create.
Definition: blob_options.hpp:256