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 "azure/core/credentials/credentials.hpp"
7 #include "azure/storage/blobs/blob_client.hpp"
8 #include "azure/storage/blobs/blob_options.hpp"
9 #include "azure/storage/blobs/protocol/blob_rest_client.hpp"
10 #include "azure/storage/common/storage_credential.hpp"
11 
12 #include <map>
13 #include <memory>
14 #include <string>
15 
16 namespace Azure { namespace Storage { namespace Blobs {
17 
23  public:
35  const std::string& connectionString,
36  const std::string& containerName,
38 
50  explicit BlobContainerClient(
51  const std::string& containerUri,
52  std::shared_ptr<SharedKeyCredential> credential,
54 
65  explicit BlobContainerClient(
66  const std::string& containerUri,
67  std::shared_ptr<Core::Credentials::ClientSecretCredential> credential,
69 
80  explicit BlobContainerClient(
81  const std::string& containerUri,
83 
91  BlobClient GetBlobClient(const std::string& blobName) const;
92 
100  BlockBlobClient GetBlockBlobClient(const std::string& blobName) const;
101 
109  AppendBlobClient GetAppendBlobClient(const std::string& blobName) const;
110 
118  PageBlobClient GetPageBlobClient(const std::string& blobName) const;
119 
126  std::string GetUri() const { return m_containerUrl.GetAbsoluteUrl(); }
127 
136  Azure::Core::Response<CreateContainerResult> Create(
137  const CreateContainerOptions& options = CreateContainerOptions()) const;
138 
147  Azure::Core::Response<DeleteContainerResult> Delete(
148  const DeleteContainerOptions& options = DeleteContainerOptions()) const;
149 
159  Azure::Core::Response<UndeleteContainerResult> Undelete(
160  const std::string& deletedContainerName,
161  const std::string& deletedContainerVersion,
162  const UndeleteContainerOptions& options = UndeleteContainerOptions()) const;
163 
171  Azure::Core::Response<GetContainerPropertiesResult> GetProperties(
173 
182  Azure::Core::Response<SetContainerMetadataResult> SetMetadata(
183  std::map<std::string, std::string> metadata,
185 
195  Azure::Core::Response<ListBlobsFlatSegmentResult> ListBlobsFlatSegment(
196  const ListBlobsSegmentOptions& options = ListBlobsSegmentOptions()) const;
197 
212  Azure::Core::Response<ListBlobsByHierarchySegmentResult> ListBlobsByHierarchySegment(
213  const std::string& delimiter,
214  const ListBlobsSegmentOptions& options = ListBlobsSegmentOptions()) const;
215 
224  Azure::Core::Response<GetContainerAccessPolicyResult> GetAccessPolicy(
226 
235  Azure::Core::Response<SetContainerAccessPolicyResult> SetAccessPolicy(
237 
251  Azure::Core::Response<AcquireContainerLeaseResult> AcquireLease(
252  const std::string& proposedLeaseId,
253  int32_t duration,
255 
265  Azure::Core::Response<RenewContainerLeaseResult> RenewLease(
266  const std::string& leaseId,
267  const RenewContainerLeaseOptions& options = RenewContainerLeaseOptions()) const;
268 
278  Azure::Core::Response<ReleaseContainerLeaseResult> ReleaseLease(
279  const std::string& leaseId,
281 
292  Azure::Core::Response<ChangeContainerLeaseResult> ChangeLease(
293  const std::string& leaseId,
294  const std::string& proposedLeaseId,
296 
304  Azure::Core::Response<BreakContainerLeaseResult> BreakLease(
305  const BreakContainerLeaseOptions& options = BreakContainerLeaseOptions()) const;
306 
307  protected:
308  Azure::Core::Http::Url m_containerUrl;
309  std::shared_ptr<Azure::Core::Http::HttpPipeline> m_pipeline;
310  Azure::Core::Nullable<EncryptionKey> m_customerProvidedKey;
311  Azure::Core::Nullable<std::string> m_encryptionScope;
312 
313  private:
314  explicit BlobContainerClient(
315  Azure::Core::Http::Url containerUri,
316  std::shared_ptr<Azure::Core::Http::HttpPipeline> pipeline)
317  : m_containerUrl(std::move(containerUri)), m_pipeline(std::move(pipeline))
318  {
319  }
320 
321  friend class BlobServiceClient;
322  };
323 
324 }}} // namespace Azure::Storage::Blobs
Azure::Storage::Blobs::BlobContainerClient::Create
Azure::Core::Response< CreateContainerResult > Create(const CreateContainerOptions &options=CreateContainerOptions()) const
Creates a new container under the specified account. If the container with the same name already exis...
Definition: blob_container_client.cpp:143
Azure::Storage::Blobs::BlobContainerClient::Undelete
Azure::Core::Response< UndeleteContainerResult > Undelete(const std::string &deletedContainerName, const std::string &deletedContainerVersion, const UndeleteContainerOptions &options=UndeleteContainerOptions()) const
Restores a previously deleted container. The destionation is referenced by current BlobContainerClien...
Definition: blob_container_client.cpp:166
Azure::Storage::Blobs::BlobContainerClient::CreateFromConnectionString
static BlobContainerClient CreateFromConnectionString(const std::string &connectionString, const std::string &containerName, const BlobContainerClientOptions &options=BlobContainerClientOptions())
Initialize a new instance of BlobContainerClient.
Definition: blob_container_client.cpp:19
Azure::Storage::Blobs::BlobContainerClient::ChangeLease
Azure::Core::Response< ChangeContainerLeaseResult > ChangeLease(const std::string &leaseId, const std::string &proposedLeaseId, const ChangeContainerLeaseOptions &options=ChangeContainerLeaseOptions()) const
Changes the lease of an active lease.
Definition: blob_container_client.cpp:308
Azure::Storage::Blobs::BlobContainerClient::RenewLease
Azure::Core::Response< RenewContainerLeaseResult > RenewLease(const std::string &leaseId, const RenewContainerLeaseOptions &options=RenewContainerLeaseOptions()) const
Renews the container's previously-acquired lease.
Definition: blob_container_client.cpp:284
Azure::Storage::Blobs::ReleaseContainerLeaseOptions
Optional parameters for BlobContainerClient::ReleaseLease.
Definition: blob_options.hpp:482
Azure::Storage::Blobs::RenewContainerLeaseOptions
Optional parameters for BlobContainerClient::RenewLease.
Definition: blob_options.hpp:460
Azure::Storage::Blobs::AcquireContainerLeaseOptions
Optional parameters for BlobContainerClient::AcquireLease.
Definition: blob_options.hpp:449
Azure::Storage::Blobs::BreakContainerLeaseOptions
Optional parameters for BlobContainerClient::BreakLease.
Definition: blob_options.hpp:493
Azure::Storage::Blobs::BlobClient
The BlobClient allows you to manipulate Azure Storage blobs.
Definition: blob_client.hpp:30
Azure::Storage::Blobs::BlobContainerClient
Definition: blob_container_client.hpp:22
Azure::Storage::Blobs::BlobContainerClient::BreakLease
Azure::Core::Response< BreakContainerLeaseResult > BreakLease(const BreakContainerLeaseOptions &options=BreakContainerLeaseOptions()) const
Breaks the previously-acquired lease.
Definition: blob_container_client.cpp:322
Azure::Storage::Blobs::BlobContainerClient::Delete
Azure::Core::Response< DeleteContainerResult > Delete(const DeleteContainerOptions &options=DeleteContainerOptions()) const
Marks the specified container for deletion. The container and any blobs contained within it are later...
Definition: blob_container_client.cpp:155
Azure::Storage::Blobs::ListBlobsSegmentOptions
Optional parameters for BlobContainerClient::ListBlobsFlatSegment.
Definition: blob_options.hpp:368
Azure::Storage::Blobs::BlobContainerClientOptions
Container client options used to initalize BlobContainerClient.
Definition: blob_options.hpp:248
Azure::Storage::Blobs::BlobContainerClient::ReleaseLease
Azure::Core::Response< ReleaseContainerLeaseResult > ReleaseLease(const std::string &leaseId, const ReleaseContainerLeaseOptions &options=ReleaseContainerLeaseOptions()) const
Releases the container's previously-acquired lease.
Definition: blob_container_client.cpp:296
Azure::Storage::Blobs::BlobContainerClient::GetAccessPolicy
Azure::Core::Response< GetContainerAccessPolicyResult > GetAccessPolicy(const GetContainerAccessPolicyOptions &options=GetContainerAccessPolicyOptions()) const
Gets the permissions for this container. The permissions indicate whether container data may be acces...
Definition: blob_container_client.cpp:248
Azure::Storage::Blobs::PageBlobClient
Definition: page_blob_client.hpp:26
Azure::Storage::Blobs::BlobContainerClient::SetMetadata
Azure::Core::Response< SetContainerMetadataResult > SetMetadata(std::map< std::string, std::string > metadata, SetContainerMetadataOptions options=SetContainerMetadataOptions()) const
Sets one or more user-defined name-value pairs for the specified container.
Definition: blob_container_client.cpp:187
Azure::Storage::Blobs::ChangeContainerLeaseOptions
Optional parameters for BlobContainerClient::ChangeLease.
Definition: blob_options.hpp:471
Azure::Storage::Blobs::BlobContainerClient::ListBlobsByHierarchySegment
Azure::Core::Response< ListBlobsByHierarchySegmentResult > ListBlobsByHierarchySegment(const std::string &delimiter, const ListBlobsSegmentOptions &options=ListBlobsSegmentOptions()) const
Returns a single segment of blobs in this container, starting from the specified Marker,...
Definition: blob_container_client.cpp:226
Azure::Storage::Blobs::BlobContainerClient::BlobContainerClient
BlobContainerClient(const std::string &containerUri, std::shared_ptr< SharedKeyCredential > credential, const BlobContainerClientOptions &options=BlobContainerClientOptions())
Initialize a new instance of BlobContainerClient.
Definition: blob_container_client.cpp:39
Azure::Storage::Blobs::BlobContainerClient::GetPageBlobClient
PageBlobClient GetPageBlobClient(const std::string &blobName) const
Create a new PageBlobClient object by appending blobName to the end of uri. The new PageBlobClient us...
Definition: blob_container_client.cpp:138
Azure::Storage::Blobs::GetContainerPropertiesOptions
Optional parameters for BlobContainerClient::GetProperties.
Definition: blob_options.hpp:336
Azure::Storage::Blobs::BlobContainerClient::ListBlobsFlatSegment
Azure::Core::Response< ListBlobsFlatSegmentResult > ListBlobsFlatSegment(const ListBlobsSegmentOptions &options=ListBlobsSegmentOptions()) const
Returns a single segment of blobs in this container, starting from the specified Marker,...
Definition: blob_container_client.cpp:205
Azure::Storage::Blobs::BlobContainerClient::GetProperties
Azure::Core::Response< GetContainerPropertiesResult > GetProperties(const GetContainerPropertiesOptions &options=GetContainerPropertiesOptions()) const
Returns all user-defined metadata and system properties for the specified container....
Definition: blob_container_client.cpp:178
Azure::Storage::Blobs::UndeleteContainerOptions
Optional parameters for BlobContainerClient::Undelete.
Definition: blob_options.hpp:325
Azure::Storage::Blobs::BlobContainerClient::GetBlockBlobClient
BlockBlobClient GetBlockBlobClient(const std::string &blobName) const
Create a new BlockBlobClient object by appending blobName to the end of uri. The new BlockBlobClient ...
Definition: blob_container_client.cpp:128
Azure::Storage::Blobs::BlobContainerClient::GetBlobClient
BlobClient GetBlobClient(const std::string &blobName) const
Create a new BlobClient object by appending blobName to the end of uri. The new BlobClient uses the s...
Definition: blob_container_client.cpp:121
Azure::Storage::Blobs::GetContainerAccessPolicyOptions
Optional parameters for BlobContainerClient::GetAccessPolicy.
Definition: blob_options.hpp:405
Azure::Storage::Blobs::DeleteContainerOptions
Optional parameters for BlobContainerClient::Delete.
Definition: blob_options.hpp:309
Azure::Storage::Blobs::BlockBlobClient
The BlockBlobClient allows you to manipulate Azure Storage block blobs.
Definition: block_blob_client.hpp:34
Azure::Storage::Blobs::AppendBlobClient
The AppendBlobClient allows you to manipulate Azure Storage append blobs.
Definition: append_blob_client.hpp:24
Azure::Storage::Blobs::BlobContainerClient::GetAppendBlobClient
AppendBlobClient GetAppendBlobClient(const std::string &blobName) const
Create a new AppendBlobClient object by appending blobName to the end of uri. The new AppendBlobClien...
Definition: blob_container_client.cpp:133
Azure::Storage::Blobs::BlobContainerClient::GetUri
std::string GetUri() const
Gets the container's primary uri endpoint.
Definition: blob_container_client.hpp:126
Azure::Storage::Blobs::SetContainerAccessPolicyOptions
Optional parameters for BlobContainerClient::SetAccessPolicy.
Definition: blob_options.hpp:421
Azure::Storage::Blobs::SetContainerMetadataOptions
Optional parameters for BlobContainerClient::SetMetadata.
Definition: blob_options.hpp:352
Azure::Storage::Blobs::BlobContainerClient::AcquireLease
Azure::Core::Response< AcquireContainerLeaseResult > AcquireLease(const std::string &proposedLeaseId, int32_t duration, const AcquireContainerLeaseOptions &options=AcquireContainerLeaseOptions()) const
Acquires a lease on the container.
Definition: blob_container_client.cpp:270
Azure::Storage::Blobs::CreateContainerOptions
Optional parameters for BlobContainerClient::Create.
Definition: blob_options.hpp:276
Azure::Storage::Blobs::BlobContainerClient::SetAccessPolicy
Azure::Core::Response< SetContainerAccessPolicyResult > SetAccessPolicy(const SetContainerAccessPolicyOptions &options=SetContainerAccessPolicyOptions()) const
Sets the permissions for the specified container. The permissions indicate whether blob container dat...
Definition: blob_container_client.cpp:257