azure-storage-blobs
blob_responses.hpp
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
6 #include <cstdint>
7 #include <string>
8 #include <thread>
9 #include <vector>
10 
11 #include <azure/core/operation.hpp>
12 #include <azure/core/paged_response.hpp>
13 
14 #include "azure/storage/blobs/blob_options.hpp"
15 #include "azure/storage/blobs/protocol/blob_rest_client.hpp"
16 
17 namespace Azure { namespace Storage {
18 
19  namespace Files { namespace DataLake {
20  class ListFileSystemsPagedResponse;
21  }} // namespace Files::DataLake
22 
23  namespace Blobs {
24 
25  class BlobServiceClient;
26  class BlobContainerClient;
27  class BlobClient;
28  class PageBlobClient;
29 
30  namespace Models {
31 
35  struct DownloadBlobToResult final
36  {
41 
45  Azure::Core::Http::HttpRange ContentRange;
46 
50  int64_t BlobSize = 0;
51 
55  Azure::Nullable<ContentHash> TransactionalContentHash;
56 
61  };
62 
64 
68  struct AcquireLeaseResult final
69  {
73  Azure::ETag ETag;
74 
78  Azure::DateTime LastModified;
79 
85  std::string LeaseId;
86  };
87 
91  struct BreakLeaseResult final
92  {
96  Azure::ETag ETag;
97 
101  Azure::DateTime LastModified;
102  };
103 
107  struct ChangeLeaseResult final
108  {
112  Azure::ETag ETag;
113 
117  Azure::DateTime LastModified;
118 
124  std::string LeaseId;
125  };
126 
130  struct ReleaseLeaseResult final
131  {
135  Azure::ETag ETag;
136 
140  Azure::DateTime LastModified;
141  };
142 
146  struct RenewLeaseResult final
147  {
151  Azure::ETag ETag;
152 
156  Azure::DateTime LastModified;
157 
163  std::string LeaseId;
164  };
165 
166  } // namespace Models
167 
171  class StartBlobCopyOperation final : public Azure::Core::Operation<Models::BlobProperties> {
172  public:
179  Models::BlobProperties Value() const override { return m_pollResult; }
180 
181  StartBlobCopyOperation() = default;
182 
184 
185  StartBlobCopyOperation& operator=(StartBlobCopyOperation&&) = default;
186 
187  ~StartBlobCopyOperation() override {}
188 
189  private:
190  std::string GetResumeToken() const override { AZURE_NOT_IMPLEMENTED(); }
191 
192  std::unique_ptr<Azure::Core::Http::RawResponse> PollInternal(
193  const Azure::Core::Context& context) override;
194 
195  Azure::Response<Models::BlobProperties> PollUntilDoneInternal(
196  std::chrono::milliseconds period,
197  Azure::Core::Context& context) override;
198 
199  Azure::Core::Http::RawResponse const& GetRawResponseInternal() const override
200  {
201  return *m_rawResponse;
202  }
203 
204  std::shared_ptr<BlobClient> m_blobClient;
205  Models::BlobProperties m_pollResult;
206 
207  friend class Blobs::BlobClient;
208  friend class Blobs::PageBlobClient;
209  };
210 
215  : public Azure::Core::PagedResponse<ListBlobContainersPagedResponse> {
216  public:
220  std::string ServiceEndpoint;
221 
225  std::string Prefix;
226 
230  std::vector<Models::BlobContainerItem> BlobContainers;
231 
232  private:
233  void OnNextPage(const Azure::Core::Context& context);
234 
235  std::shared_ptr<BlobServiceClient> m_blobServiceClient;
236  ListBlobContainersOptions m_operationOptions;
237 
238  friend class BlobServiceClient;
239  friend class Azure::Core::PagedResponse<ListBlobContainersPagedResponse>;
240  friend class Files::DataLake::ListFileSystemsPagedResponse;
241  };
242 
247  : public Azure::Core::PagedResponse<FindBlobsByTagsPagedResponse> {
248  public:
252  std::string ServiceEndpoint;
253 
257  std::vector<Models::TaggedBlobItem> TaggedBlobs;
258 
259  private:
260  void OnNextPage(const Azure::Core::Context& context);
261 
262  std::shared_ptr<BlobServiceClient> m_blobServiceClient;
263  FindBlobsByTagsOptions m_operationOptions;
264  std::string m_tagFilterSqlExpression;
265 
266  friend class BlobServiceClient;
267  friend class Azure::Core::PagedResponse<FindBlobsByTagsPagedResponse>;
268  };
269 
273  class ListBlobsPagedResponse final : public Azure::Core::PagedResponse<ListBlobsPagedResponse> {
274  public:
278  std::string ServiceEndpoint;
279 
283  std::string BlobContainerName;
284 
288  std::string Prefix;
289 
293  std::vector<Models::BlobItem> Blobs;
294 
295  private:
296  void OnNextPage(const Azure::Core::Context& context);
297 
298  std::shared_ptr<BlobContainerClient> m_blobContainerClient;
299  ListBlobsOptions m_operationOptions;
300 
301  friend class BlobContainerClient;
302  friend class Azure::Core::PagedResponse<ListBlobsPagedResponse>;
303  };
304 
309  : public Azure::Core::PagedResponse<ListBlobsByHierarchyPagedResponse> {
310  public:
314  std::string ServiceEndpoint;
315 
319  std::string BlobContainerName;
320 
324  std::string Prefix;
325 
330  std::string Delimiter;
331 
335  std::vector<Models::BlobItem> Blobs;
336 
340  std::vector<std::string> BlobPrefixes;
341 
342  private:
343  void OnNextPage(const Azure::Core::Context& context);
344 
345  std::shared_ptr<BlobContainerClient> m_blobContainerClient;
346  ListBlobsOptions m_operationOptions;
347  std::string m_delimiter;
348 
349  friend class BlobContainerClient;
350  friend class Azure::Core::PagedResponse<ListBlobsByHierarchyPagedResponse>;
351  };
352 
357  : public Azure::Core::PagedResponse<GetPageRangesPagedResponse> {
358  public:
362  Azure::ETag ETag;
363 
367  Azure::DateTime LastModified;
368 
372  int64_t BlobSize = 0;
373 
377  std::vector<Azure::Core::Http::HttpRange> PageRanges;
378 
379  private:
380  void OnNextPage(const Azure::Core::Context& context);
381 
382  std::shared_ptr<PageBlobClient> m_pageBlobClient;
383  GetPageRangesOptions m_operationOptions;
384 
385  friend class PageBlobClient;
386  friend class Azure::Core::PagedResponse<GetPageRangesPagedResponse>;
387  };
388 
394  : public Azure::Core::PagedResponse<GetPageRangesDiffPagedResponse> {
395  public:
399  Azure::ETag ETag;
400 
404  Azure::DateTime LastModified;
405 
409  int64_t BlobSize = 0;
410 
414  std::vector<Azure::Core::Http::HttpRange> PageRanges;
415 
419  std::vector<Azure::Core::Http::HttpRange> ClearRanges;
420 
421  private:
422  void OnNextPage(const Azure::Core::Context& context);
423 
424  std::shared_ptr<PageBlobClient> m_pageBlobClient;
425  GetPageRangesOptions m_operationOptions;
426  Azure::Nullable<std::string> m_previousSnapshot;
427  Azure::Nullable<std::string> m_previousSnapshotUrl;
428 
429  friend class PageBlobClient;
430  friend class Azure::Core::PagedResponse<GetPageRangesDiffPagedResponse>;
431  };
432 
433  } // namespace Blobs
434 }} // namespace Azure::Storage
Azure::Storage::Blobs::ListBlobsPagedResponse::BlobContainerName
std::string BlobContainerName
Definition: blob_responses.hpp:283
Azure::Storage::Blobs::Models::ReleaseLeaseResult::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:140
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse::ServiceEndpoint
std::string ServiceEndpoint
Definition: blob_responses.hpp:314
Azure::Storage::Blobs::GetPageRangesOptions
Optional parameters for Azure::Storage::Blobs::PageBlobClient::GetPageRanges.
Definition: blob_options.hpp:1016
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse::BlobContainerName
std::string BlobContainerName
Definition: blob_responses.hpp:319
Azure::Storage::Blobs::Models::AcquireLeaseResult::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:78
Azure::Storage::Blobs::BlobContainerClient
Definition: blob_container_client.hpp:20
Azure::Storage::Blobs::GetPageRangesPagedResponse::PageRanges
std::vector< Azure::Core::Http::HttpRange > PageRanges
Definition: blob_responses.hpp:377
Azure::Storage::Blobs::Models::BlobType
Extensible enum used to identify blob type.
Definition: blob_rest_client.hpp:745
Azure::Storage::Blobs::Models::BreakLeaseResult::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:101
Azure::Storage::Blobs::StartBlobCopyOperation::Value
Models::BlobProperties Value() const override
Get the Azure::Storage::Blobs::Models::BlobProperties object, which includes the latest copy informat...
Definition: blob_responses.hpp:179
Azure::Storage::Blobs::ListBlobContainersPagedResponse::BlobContainers
std::vector< Models::BlobContainerItem > BlobContainers
Definition: blob_responses.hpp:230
Azure::Storage::Blobs::Models::AcquireLeaseResult
Response type for Azure::Storage::Blobs::BlobLeaseClient::Acquire.
Definition: blob_responses.hpp:69
Azure::Storage::Blobs::Models::ReleaseLeaseResult::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:135
Azure::Storage::Blobs::ListBlobsOptions
Optional parameters for Azure::Storage::Blobs::BlobContainerClient::ListBlobs and Azure::Storage::Blo...
Definition: blob_options.hpp:332
Azure::Storage::Blobs::ListBlobContainersOptions
Optional parameters for Azure::Storage::Blobs::BlobServiceClient::ListBlobContainers.
Definition: blob_options.hpp:165
Azure::Storage::Blobs::ListBlobsPagedResponse::ServiceEndpoint
std::string ServiceEndpoint
Definition: blob_responses.hpp:278
Azure::Storage::Blobs::GetPageRangesDiffPagedResponse::PageRanges
std::vector< Azure::Core::Http::HttpRange > PageRanges
Definition: blob_responses.hpp:414
Azure::Storage::Blobs::Models::RenewLeaseResult::LeaseId
std::string LeaseId
Definition: blob_responses.hpp:163
Azure::Storage::Blobs::FindBlobsByTagsPagedResponse::ServiceEndpoint
std::string ServiceEndpoint
Definition: blob_responses.hpp:252
Azure::Storage::Blobs::Models::RenewLeaseResult::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:151
Azure::Storage::Blobs::FindBlobsByTagsPagedResponse
Response type for Azure::Storage::Blobs::BlobServiceClient::FindBlobsByTags.
Definition: blob_responses.hpp:247
Azure::Storage::Blobs::Models::BreakLeaseResult::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:96
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse::Delimiter
std::string Delimiter
Definition: blob_responses.hpp:330
Azure::Storage::Blobs::PageBlobClient
Definition: page_blob_client.hpp:23
Azure::Storage::Blobs::ListBlobsPagedResponse::Prefix
std::string Prefix
Definition: blob_responses.hpp:288
Azure::Storage::Blobs::BlobServiceClient
Definition: blob_service_client.hpp:20
Azure::Storage::Blobs::Models::UploadBlockBlobResult
Response type for Azure::Storage::Blobs::BlockBlobClient::Upload.
Definition: blob_rest_client.hpp:2210
Azure::Storage::Blobs::GetPageRangesDiffPagedResponse::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:404
Azure::Storage::Blobs::Models::DownloadBlobToResult::Details
DownloadBlobDetails Details
Definition: blob_responses.hpp:60
Azure::Storage::Blobs::ListBlobsPagedResponse
Response type for Azure::Storage::Blobs::BlobContainerClient::ListBlobs.
Definition: blob_responses.hpp:273
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse::Prefix
std::string Prefix
Definition: blob_responses.hpp:324
Azure::Storage::Blobs::GetPageRangesDiffPagedResponse::ClearRanges
std::vector< Azure::Core::Http::HttpRange > ClearRanges
Definition: blob_responses.hpp:419
Azure::Storage::Blobs::Models::DownloadBlobToResult::ContentRange
Azure::Core::Http::HttpRange ContentRange
Definition: blob_responses.hpp:45
Azure::Storage::Blobs::Models::DownloadBlobToResult::BlobType
Models::BlobType BlobType
Definition: blob_responses.hpp:40
Azure::Storage::Blobs::Models::RenewLeaseResult::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:156
Azure::Storage::Blobs::GetPageRangesDiffPagedResponse::BlobSize
int64_t BlobSize
Definition: blob_responses.hpp:409
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse::Blobs
std::vector< Models::BlobItem > Blobs
Definition: blob_responses.hpp:335
Azure::Storage::Blobs::StartBlobCopyOperation
A long-running operation to copy a blob.
Definition: blob_responses.hpp:171
Azure::Storage::Blobs::FindBlobsByTagsOptions
Optional parameters for Azure::Storage::Blobs::BlobServiceClient::FindBlobsByTags.
Definition: blob_options.hpp:237
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse
Response type for #Azure::Storage::Blobs::BlobContainerClient::ByHierarchy.
Definition: blob_responses.hpp:309
Azure::Storage::Blobs::ListBlobContainersPagedResponse::ServiceEndpoint
std::string ServiceEndpoint
Definition: blob_responses.hpp:220
Azure::Storage::Blobs::Models::AcquireLeaseResult::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:73
Azure::Storage::Blobs::GetPageRangesDiffPagedResponse
Response type for Azure::Storage::Blobs::PageBlobClient::GetPageRangesDiff and Azure::Storage::Blobs:...
Definition: blob_responses.hpp:394
Azure::Storage::Blobs::ListBlobsPagedResponse::Blobs
std::vector< Models::BlobItem > Blobs
Definition: blob_responses.hpp:293
Azure::Storage::Blobs::GetPageRangesPagedResponse
Response type for Azure::Storage::Blobs::PageBlobClient::GetPageRanges.
Definition: blob_responses.hpp:357
Azure::Storage::Blobs::FindBlobsByTagsPagedResponse::TaggedBlobs
std::vector< Models::TaggedBlobItem > TaggedBlobs
Definition: blob_responses.hpp:257
Azure::Storage::Blobs::Models::BreakLeaseResult
Response type for Azure::Storage::Blobs::BlobLeaseClient::Break.
Definition: blob_responses.hpp:92
Azure::Storage::Blobs::ListBlobContainersPagedResponse::Prefix
std::string Prefix
Definition: blob_responses.hpp:225
Azure::Storage::Blobs::Models::DownloadBlobToResult::BlobSize
int64_t BlobSize
Definition: blob_responses.hpp:50
Azure::Storage::Blobs::GetPageRangesDiffPagedResponse::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:399
Azure::Storage::Blobs::Models::ChangeLeaseResult::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:112
Azure::Storage::Blobs::GetPageRangesPagedResponse::BlobSize
int64_t BlobSize
Definition: blob_responses.hpp:372
Azure::Storage::Blobs::Models::DownloadBlobToResult::TransactionalContentHash
Azure::Nullable< ContentHash > TransactionalContentHash
Definition: blob_responses.hpp:55
Azure::Storage::Blobs::ListBlobContainersPagedResponse
Response type for Azure::Storage::Blobs::BlobServiceClient::ListBlobContainers.
Definition: blob_responses.hpp:215
Azure::Storage::Blobs::GetPageRangesPagedResponse::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:367
Azure::Storage::Blobs::Models::DownloadBlobDetails
Detailed information of a downloaded blob.
Definition: blob_rest_client.hpp:899
Azure::Storage::Blobs::Models::AcquireLeaseResult::LeaseId
std::string LeaseId
Definition: blob_responses.hpp:85
Azure::Storage::Blobs::Models::RenewLeaseResult
Response type for Azure::Storage::Blobs::BlobLeaseClient::Renew.
Definition: blob_responses.hpp:147
Azure::Storage::Blobs::Models::ChangeLeaseResult
Response type for Azure::Storage::Blobs::BlobLeaseClient::Change.
Definition: blob_responses.hpp:108
Azure::Storage::Blobs::GetPageRangesPagedResponse::ETag
Azure::ETag ETag
Definition: blob_responses.hpp:362
Azure::Storage::Blobs::ListBlobsByHierarchyPagedResponse::BlobPrefixes
std::vector< std::string > BlobPrefixes
Definition: blob_responses.hpp:340
Azure::Storage::Blobs::Models::BlobProperties
Properties of a blob.
Definition: blob_rest_client.hpp:1257
Azure::Storage::Blobs::Models::DownloadBlobToResult
Response type for Azure::Storage::Blobs::BlobClient::DownloadTo.
Definition: blob_responses.hpp:36
Azure::Storage::Blobs::Models::ChangeLeaseResult::LeaseId
std::string LeaseId
Definition: blob_responses.hpp:124
Azure::Storage::Blobs::Models::ReleaseLeaseResult
Response type for Azure::Storage::Blobs::BlobLeaseClient::Release.
Definition: blob_responses.hpp:131
Azure::Storage::Blobs::Models::ChangeLeaseResult::LastModified
Azure::DateTime LastModified
Definition: blob_responses.hpp:117