Loading [MathJax]/extensions/tex2jax.js
azure-storage-blobs
All Classes Functions Variables Pages
blob_client.hpp
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include "azure/storage/blobs/blob_options.hpp"
7#include "azure/storage/blobs/blob_responses.hpp"
8#include "azure/storage/blobs/dll_import_export.hpp"
9
10#include <azure/core/credentials/credentials.hpp>
11#include <azure/storage/common/storage_credential.hpp>
12
13#include <cstdint>
14#include <map>
15#include <memory>
16#include <string>
17
18namespace Azure { namespace Storage { namespace Files { namespace DataLake {
19 class DataLakeFileSystemClient;
20 class DataLakeDirectoryClient;
21 class DataLakeFileClient;
22}}}} // namespace Azure::Storage::Files::DataLake
23
24namespace Azure { namespace Storage { namespace Blobs {
25
26 namespace _detail {
27 AZ_STORAGE_BLOBS_DLLEXPORT extern const Azure::Core::Context::Key
28 DataLakeInteroperabilityExtraOptionsKey;
29 } // namespace _detail
30
31 class BlockBlobClient;
32 class AppendBlobClient;
33 class PageBlobClient;
34 class BlobLeaseClient;
35
39 class BlobClient {
40 public:
45 virtual ~BlobClient() = default;
46
59 const std::string& connectionString,
60 const std::string& blobContainerName,
61 const std::string& blobName,
62 const BlobClientOptions& options = BlobClientOptions());
63
73 explicit BlobClient(
74 const std::string& blobUrl,
75 std::shared_ptr<StorageSharedKeyCredential> credential,
76 const BlobClientOptions& options = BlobClientOptions());
77
87 explicit BlobClient(
88 const std::string& blobUrl,
89 std::shared_ptr<Core::Credentials::TokenCredential> credential,
90 const BlobClientOptions& options = BlobClientOptions());
91
101 explicit BlobClient(
102 const std::string& blobUrl,
103 const BlobClientOptions& options = BlobClientOptions());
104
113
121
129
135 std::string GetUrl() const { return m_blobUrl.GetAbsoluteUrl(); }
136
145 BlobClient WithSnapshot(const std::string& snapshot) const;
146
155 BlobClient WithVersionId(const std::string& versionId) const;
156
165 Azure::Response<Models::BlobProperties> GetProperties(
167 const Azure::Core::Context& context = Azure::Core::Context()) const;
168
177 Azure::Response<Models::SetBlobHttpHeadersResult> SetHttpHeaders(
178 Models::BlobHttpHeaders httpHeaders,
180 const Azure::Core::Context& context = Azure::Core::Context()) const;
181
191 Azure::Response<Models::SetBlobMetadataResult> SetMetadata(
192 Metadata metadata,
194 const Azure::Core::Context& context = Azure::Core::Context()) const;
195
205 Azure::Response<Models::SetBlobAccessTierResult> SetAccessTier(
206 Models::AccessTier accessTier,
208 const Azure::Core::Context& context = Azure::Core::Context()) const;
209
222 Azure::Response<Models::CopyBlobFromUriResult> CopyFromUri(
223 const std::string& sourceUri,
225 const Azure::Core::Context& context = Azure::Core::Context()) const;
226
241 const std::string& sourceUri,
243 const Azure::Core::Context& context = Azure::Core::Context()) const;
244
254 Azure::Response<Models::AbortBlobCopyFromUriResult> AbortCopyFromUri(
255 const std::string& copyId,
257 const Azure::Core::Context& context = Azure::Core::Context()) const;
258
268 Azure::Response<Models::DownloadBlobResult> Download(
269 const DownloadBlobOptions& options = DownloadBlobOptions(),
270 const Azure::Core::Context& context = Azure::Core::Context()) const;
271
283 Azure::Response<Models::DownloadBlobToResult> DownloadTo(
284 uint8_t* buffer,
285 size_t bufferSize,
287 const Azure::Core::Context& context = Azure::Core::Context()) const;
288
298 Azure::Response<Models::DownloadBlobToResult> DownloadTo(
299 const std::string& fileName,
301 const Azure::Core::Context& context = Azure::Core::Context()) const;
302
310 Azure::Response<Models::CreateBlobSnapshotResult> CreateSnapshot(
312 const Azure::Core::Context& context = Azure::Core::Context()) const;
313
323 Azure::Response<Models::DeleteBlobResult> Delete(
324 const DeleteBlobOptions& options = DeleteBlobOptions(),
325 const Azure::Core::Context& context = Azure::Core::Context()) const;
326
335 Azure::Response<Models::DeleteBlobResult> DeleteIfExists(
336 const DeleteBlobOptions& options = DeleteBlobOptions(),
337 const Azure::Core::Context& context = Azure::Core::Context()) const;
338
347 Azure::Response<Models::UndeleteBlobResult> Undelete(
348 const UndeleteBlobOptions& options = UndeleteBlobOptions(),
349 const Azure::Core::Context& context = Azure::Core::Context()) const;
350
359 Azure::Response<Models::SetBlobTagsResult> SetTags(
360 std::map<std::string, std::string> tags,
361 const SetBlobTagsOptions& options = SetBlobTagsOptions(),
362 const Azure::Core::Context& context = Azure::Core::Context()) const;
363
371 Azure::Response<std::map<std::string, std::string>> GetTags(
372 const GetBlobTagsOptions& options = GetBlobTagsOptions(),
373 const Azure::Core::Context& context = Azure::Core::Context()) const;
374
385 Azure::Response<Models::SetBlobImmutabilityPolicyResult> SetImmutabilityPolicy(
386 Models::BlobImmutabilityPolicy immutabilityPolicy,
388 const Azure::Core::Context& context = Azure::Core::Context()) const;
389
397 Azure::Response<Models::DeleteBlobImmutabilityPolicyResult> DeleteImmutabilityPolicy(
399 const Azure::Core::Context& context = Azure::Core::Context()) const;
400
412 Azure::Response<Models::SetBlobLegalHoldResult> SetLegalHold(
413 bool hasLegalHold,
415 const Azure::Core::Context& context = Azure::Core::Context()) const;
416
424 Azure::Response<Models::AccountInfo> GetAccountInfo(
426 const Azure::Core::Context& context = Azure::Core::Context()) const;
427
428 protected:
430 Azure::Core::Url m_blobUrl;
432 std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> m_pipeline;
434 Azure::Nullable<EncryptionKey> m_customerProvidedKey;
436 Azure::Nullable<std::string> m_encryptionScope;
437
438 private:
439 explicit BlobClient(
440 Azure::Core::Url blobUrl,
441 std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> pipeline,
442 Azure::Nullable<EncryptionKey> customerProvidedKey = Azure::Nullable<EncryptionKey>(),
443 Azure::Nullable<std::string> encryptionScope = Azure::Nullable<std::string>())
444 : m_blobUrl(std::move(blobUrl)), m_pipeline(std::move(pipeline)),
445 m_customerProvidedKey(std::move(customerProvidedKey)),
446 m_encryptionScope(std::move(encryptionScope))
447 {
448 }
449
450 friend class BlobContainerClient;
451 friend class Files::DataLake::DataLakeFileSystemClient;
452 friend class Files::DataLake::DataLakeDirectoryClient;
453 friend class Files::DataLake::DataLakeFileClient;
454 friend class BlobLeaseClient;
455 friend class BlobServiceBatch;
456 friend class BlobContainerBatch;
457 };
458}}} // namespace Azure::Storage::Blobs
The AppendBlobClient allows you to manipulate Azure Storage append blobs.
Definition append_blob_client.hpp:21
The BlobClient allows you to manipulate Azure Storage blobs.
Definition blob_client.hpp:39
Azure::Response< Models::CreateBlobSnapshotResult > CreateSnapshot(const CreateBlobSnapshotOptions &options=CreateBlobSnapshotOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a read-only snapshot of a blob.
Definition blob_client.cpp:773
PageBlobClient AsPageBlobClient() const
Creates a new PageBlobClient object with the same URL as this BlobClient. The new PageBlobClient uses...
Definition blob_client.cpp:134
Azure::Response< Models::AbortBlobCopyFromUriResult > AbortCopyFromUri(const std::string &copyId, const AbortBlobCopyFromUriOptions &options=AbortBlobCopyFromUriOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Aborts a pending StartCopyFromUri operation, and leaves this blob with zero length and full metadata.
Definition blob_client.cpp:761
Azure::Response< Models::DeleteBlobImmutabilityPolicyResult > DeleteImmutabilityPolicy(const DeleteBlobImmutabilityPolicyOptions &options=DeleteBlobImmutabilityPolicyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the Immutability Policy associated with the Blob.
Definition blob_client.cpp:878
Azure::Response< Models::DeleteBlobResult > DeleteIfExists(const DeleteBlobOptions &options=DeleteBlobOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Marks the specified blob or snapshot for deletion if it exists.
Definition blob_client.cpp:812
Azure::Response< Models::CopyBlobFromUriResult > CopyFromUri(const std::string &sourceUri, const CopyBlobFromUriOptions &options=CopyBlobFromUriOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Copies data from the source to this blob, synchronously.
Definition blob_client.cpp:673
Azure::Response< Models::BlobProperties > GetProperties(const GetBlobPropertiesOptions &options=GetBlobPropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns all user-defined metadata, standard HTTP properties, and system properties for the blob....
Definition blob_client.cpp:539
Azure::Response< std::map< std::string, std::string > > GetTags(const GetBlobTagsOptions &options=GetBlobTagsOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the tags associated with the underlying blob.
Definition blob_client.cpp:854
Azure::Nullable< std::string > m_encryptionScope
Encryption scope.
Definition blob_client.hpp:436
BlobClient WithSnapshot(const std::string &snapshot) const
Initializes a new instance of the BlobClient class with an identical URL source but the specified sna...
Definition blob_client.cpp:136
Azure::Nullable< EncryptionKey > m_customerProvidedKey
Customer provided encryption key.
Definition blob_client.hpp:434
static BlobClient CreateFromConnectionString(const std::string &connectionString, const std::string &blobContainerName, const std::string &blobName, const BlobClientOptions &options=BlobClientOptions())
Initialize a new instance of BlobClient.
Definition blob_client.cpp:34
Azure::Response< Models::SetBlobLegalHoldResult > SetLegalHold(bool hasLegalHold, const SetBlobLegalHoldOptions &options=SetBlobLegalHoldOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets a legal hold on the blob. Note that Blob Versioning must be enabled on your storage account,...
Definition blob_client.cpp:888
Azure::Response< Models::SetBlobMetadataResult > SetMetadata(Metadata metadata, const SetBlobMetadataOptions &options=SetBlobMetadataOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets user-defined metadata for the specified blob as one or more name-value pairs.
Definition blob_client.cpp:636
AppendBlobClient AsAppendBlobClient() const
Creates a new AppendBlobClient object with the same URL as this BlobClient. The new AppendBlobClient ...
Definition blob_client.cpp:132
Azure::Response< Models::SetBlobHttpHeadersResult > SetHttpHeaders(Models::BlobHttpHeaders httpHeaders, const SetBlobHttpHeadersOptions &options=SetBlobHttpHeadersOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets system properties on the blob.
Definition blob_client.cpp:614
Azure::Response< Models::SetBlobTagsResult > SetTags(std::map< std::string, std::string > tags, const SetBlobTagsOptions &options=SetBlobTagsOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets tags on the underlying blob.
Definition blob_client.cpp:842
Azure::Response< Models::DownloadBlobToResult > DownloadTo(uint8_t *buffer, size_t bufferSize, const DownloadBlobToOptions &options=DownloadBlobToOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Downloads a blob or a blob range from the service to a memory buffer using parallel requests.
Definition blob_client.cpp:316
Azure::Core::Url m_blobUrl
Blob Url.
Definition blob_client.hpp:430
virtual ~BlobClient()=default
Destructor.
Azure::Response< Models::UndeleteBlobResult > Undelete(const UndeleteBlobOptions &options=UndeleteBlobOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Restores the contents and metadata of a soft deleted blob and any associated soft deleted snapshots.
Definition blob_client.cpp:833
Azure::Response< Models::DeleteBlobResult > Delete(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_client.cpp:797
BlobClient WithVersionId(const std::string &versionId) const
Creates a clone of this instance that references a version ID rather than the base blob.
Definition blob_client.cpp:151
BlockBlobClient AsBlockBlobClient() const
Creates a new BlockBlobClient object with the same URL as this BlobClient. The new BlockBlobClient us...
Definition blob_client.cpp:130
Azure::Response< Models::SetBlobAccessTierResult > SetAccessTier(Models::AccessTier accessTier, const SetBlobAccessTierOptions &options=SetBlobAccessTierOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the tier on a blob. The operation is allowed on a page blob in a premium storage account and on ...
Definition blob_client.cpp:660
Azure::Response< Models::SetBlobImmutabilityPolicyResult > SetImmutabilityPolicy(Models::BlobImmutabilityPolicy immutabilityPolicy, const SetBlobImmutabilityPolicyOptions &options=SetBlobImmutabilityPolicyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the immutability policy on a blob, snapshot or version. Note that Blob Versioning must be enable...
Definition blob_client.cpp:865
std::string GetUrl() const
Gets the blob's primary URL endpoint.
Definition blob_client.hpp:135
Azure::Response< Models::DownloadBlobResult > Download(const DownloadBlobOptions &options=DownloadBlobOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Downloads a blob or a blob range from the service, including its metadata and properties.
Definition blob_client.cpp:166
StartBlobCopyOperation StartCopyFromUri(const std::string &sourceUri, const StartBlobCopyFromUriOptions &options=StartBlobCopyFromUriOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Copies data at from the source to this blob.
Definition blob_client.cpp:721
Azure::Response< Models::AccountInfo > GetAccountInfo(const GetAccountInfoOptions &options=GetAccountInfoOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns the sku name and account kind for the specified account.
Definition blob_client.cpp:899
std::shared_ptr< Azure::Core::Http::_internal::HttpPipeline > m_pipeline
Http Pipeline.
Definition blob_client.hpp:432
A batch object allows you to batch multiple operations in a single request via Azure::Storage::Blobs:...
Definition blob_batch.hpp:149
Definition blob_container_client.hpp:21
BlobLeaseClient allows you to manipulate Azure Storage leases on containers and blobs.
Definition blob_lease_client.hpp:18
A batch object allows you to batch multiple operations in a single request via Azure::Storage::Blobs:...
Definition blob_batch.hpp:73
The BlockBlobClient allows you to manipulate Azure Storage block blobs.
Definition block_blob_client.hpp:31
Optional. Indicates the tier to be set on the blob.
Definition rest_client.hpp:937
Definition page_blob_client.hpp:23
A long-running operation to copy a blob.
Definition blob_responses.hpp:221
Optional parameters for Azure::Storage::Blobs::BlobClient::AbortCopyFromUri.
Definition blob_options.hpp:649
Client options used to initialize all kinds of blob clients.
Definition blob_options.hpp:175
Optional parameters for Azure::Storage::Blobs::BlobClient::CopyFromUri.
Definition blob_options.hpp:580
Optional parameters for Azure::Storage::Blobs::BlobClient::CreateSnapshot.
Definition blob_options.hpp:716
Optional parameters for Azure::Storage::Blobs::BlobClient::DeleteImmutabilityPolicy.
Definition blob_options.hpp:1593
Optional parameters for Azure::Storage::Blobs::BlobClient::Delete.
Definition blob_options.hpp:735
Optional parameters for Azure::Storage::Blobs::BlobClient::Download.
Definition blob_options.hpp:660
Optional parameters for Azure::Storage::Blobs::BlobClient::DownloadTo.
Definition blob_options.hpp:682
Optional parameters for Azure::Storage::Blobs::BlobServiceClient::GetAccountInfo.
Definition blob_options.hpp:277
Optional parameters for Azure::Storage::Blobs::BlobClient::GetProperties.
Definition blob_options.hpp:464
Optional parameters for Azure::Storage::Blobs::BlobClient::GetTags.
Definition blob_options.hpp:837
Standard HTTP properties supported by containers and blobs.
Definition rest_client.hpp:1023
Immutability policy associated with the blob.
Definition rest_client.hpp:1121
Optional parameters for Azure::Storage::Blobs::BlobClient::SetAccessTier.
Definition blob_options.hpp:497
Optional parameters for Azure::Storage::Blobs::BlobClient::SetHttpHeaders.
Definition blob_options.hpp:475
Optional parameters for Azure::Storage::Blobs::BlobClient::SetImmutabilityPolicy.
Definition blob_options.hpp:1575
Optional parameters for Azure::Storage::Blobs::BlobClient::SetMetadata.
Definition blob_options.hpp:486
Optional parameters for Azure::Storage::Blobs::BlobClient::SetTags.
Definition blob_options.hpp:824
Optional parameters for Azure::Storage::Blobs::BlobClient::StartCopyFromUri.
Definition blob_options.hpp:516
Optional parameters for Azure::Storage::Blobs::BlobClient::Undelete.
Definition blob_options.hpp:753