azure-storage-files-shares
share_responses.hpp
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
6 #include <azure/core/operation.hpp>
7 #include <azure/core/paged_response.hpp>
8 
9 #include "azure/storage/files/shares/protocol/share_rest_client.hpp"
10 #include "azure/storage/files/shares/share_constants.hpp"
11 #include "azure/storage/files/shares/share_options.hpp"
12 
13 namespace Azure { namespace Storage { namespace Files { namespace Shares {
14 
15  class ShareServiceClient;
16  class ShareFileClient;
17  class ShareDirectoryClient;
18 
19  namespace Models {
20 
25  {
26  };
27 
31  struct DownloadFileDetails final
32  {
36  Azure::ETag ETag;
37 
41  DateTime LastModified;
42 
46  Storage::Metadata Metadata;
47 
51  Nullable<DateTime> CopyCompletedOn;
52 
56  Nullable<std::string> CopyStatusDescription;
57 
61  Nullable<std::string> CopyId;
62 
66  Nullable<std::string> CopyProgress;
67 
71  Nullable<std::string> CopySource;
72 
76  Nullable<Models::CopyStatus> CopyStatus;
77 
81  bool IsServerEncrypted = bool();
82 
87 
91  Nullable<Models::LeaseDuration> LeaseDuration;
92 
96  Nullable<Models::LeaseState> LeaseState;
97 
101  Nullable<Models::LeaseStatus> LeaseStatus;
102  };
103 
107  struct DownloadFileResult final
108  {
112  std::unique_ptr<Azure::Core::IO::BodyStream> BodyStream;
113 
117  Azure::Core::Http::HttpRange ContentRange;
118 
122  int64_t FileSize = 0;
123 
127  Nullable<Storage::ContentHash> TransactionalContentHash;
128 
133 
138  };
139 
143  struct ClearFileRangeResult final
144  {
148  Azure::ETag ETag;
149 
153  DateTime LastModified;
154 
158  bool IsServerEncrypted = bool();
159  };
160 
164  struct DownloadFileToResult final
165  {
169  int64_t FileSize = 0;
170 
174  Azure::Core::Http::HttpRange ContentRange;
175 
180 
185  };
186 
191  {
192  };
193 
197  struct UploadFileFromResult final
198  {
202  bool IsServerEncrypted = false;
203  };
204 
205  } // namespace Models
206 
210  class StartFileCopyOperation final : public Azure::Core::Operation<Models::FileProperties> {
211  public:
218  Models::FileProperties Value() const override { return m_pollResult; }
219 
220  StartFileCopyOperation() = default;
221 
223 
224  StartFileCopyOperation& operator=(StartFileCopyOperation&&) = default;
225 
226  ~StartFileCopyOperation() override {}
227 
228  private:
229  std::string GetResumeToken() const override { AZURE_NOT_IMPLEMENTED(); }
230 
231  std::unique_ptr<Azure::Core::Http::RawResponse> PollInternal(
232  const Azure::Core::Context& context) override;
233 
234  Azure::Response<Models::FileProperties> PollUntilDoneInternal(
235  std::chrono::milliseconds period,
236  Azure::Core::Context& context) override;
237 
238  const Azure::Core::Http::RawResponse& GetRawResponseInternal() const override
239  {
240  return *m_rawResponse;
241  }
242 
243  std::shared_ptr<ShareFileClient> m_fileClient;
244  Models::FileProperties m_pollResult;
245 
246  friend class ShareFileClient;
247  };
248 
252  class ListSharesPagedResponse final : public Azure::Core::PagedResponse<ListSharesPagedResponse> {
253  public:
257  std::string ServiceEndpoint;
261  std::string Prefix;
265  std::vector<Models::ShareItem> Shares;
266 
267  private:
268  void OnNextPage(const Azure::Core::Context& context);
269 
270  std::shared_ptr<ShareServiceClient> m_shareServiceClient;
271  ListSharesOptions m_operationOptions;
272 
273  friend class ShareServiceClient;
274  friend class Azure::Core::PagedResponse<ListSharesPagedResponse>;
275  };
276 
282  : public Azure::Core::PagedResponse<ListFilesAndDirectoriesPagedResponse> {
283  public:
287  std::string ServiceEndpoint;
291  std::string ShareName;
295  std::string ShareSnapshot;
299  std::string DirectoryPath;
303  std::string Prefix;
307  std::vector<Models::DirectoryItem> Directories;
311  std::vector<Models::FileItem> Files;
312 
313  private:
314  void OnNextPage(const Azure::Core::Context& context);
315 
316  std::shared_ptr<ShareDirectoryClient> m_shareDirectoryClient;
317  ListFilesAndDirectoriesOptions m_operationOptions;
318 
319  friend class ShareDirectoryClient;
320  friend class Azure::Core::PagedResponse<ListFilesAndDirectoriesPagedResponse>;
321  };
322 
327  : public Azure::Core::PagedResponse<ListFileHandlesPagedResponse> {
328  public:
332  std::vector<Models::HandleItem> FileHandles;
333 
334  private:
335  void OnNextPage(const Azure::Core::Context& context);
336 
337  std::shared_ptr<ShareFileClient> m_shareFileClient;
338  ListFileHandlesOptions m_operationOptions;
339 
340  friend class ShareFileClient;
341  friend class Azure::Core::PagedResponse<ListFileHandlesPagedResponse>;
342  };
343 
348  : public Azure::Core::PagedResponse<ForceCloseAllFileHandlesPagedResponse> {
349  public:
358 
359  private:
360  void OnNextPage(const Azure::Core::Context& context);
361 
362  std::shared_ptr<ShareFileClient> m_shareFileClient;
363  ForceCloseAllFileHandlesOptions m_operationOptions;
364 
365  friend class ShareFileClient;
366  friend class Azure::Core::PagedResponse<ForceCloseAllFileHandlesPagedResponse>;
367  };
368 
373  : public Azure::Core::PagedResponse<ListDirectoryHandlesPagedResponse> {
374  public:
378  std::vector<Models::HandleItem> DirectoryHandles;
379 
380  private:
381  void OnNextPage(const Azure::Core::Context& context);
382 
383  std::shared_ptr<ShareDirectoryClient> m_shareDirectoryClient;
384  ListDirectoryHandlesOptions m_operationOptions;
385 
386  friend class ShareDirectoryClient;
387  friend class Azure::Core::PagedResponse<ListDirectoryHandlesPagedResponse>;
388  };
389 
395  : public Azure::Core::PagedResponse<ForceCloseAllDirectoryHandlesPagedResponse> {
396  public:
405 
406  private:
407  void OnNextPage(const Azure::Core::Context& context);
408 
409  std::shared_ptr<ShareDirectoryClient> m_shareDirectoryClient;
410  ForceCloseAllDirectoryHandlesOptions m_operationOptions;
411 
412  friend class ShareDirectoryClient;
413  friend class Azure::Core::PagedResponse<ForceCloseAllDirectoryHandlesPagedResponse>;
414  };
415 
416 }}}} // namespace Azure::Storage::Files::Shares
Azure::Storage::Files::Shares::Models::DownloadFileDetails::CopySource
Nullable< std::string > CopySource
Definition: share_responses.hpp:71
Azure::Storage::Files::Shares::Models::ClearFileRangeResult::LastModified
DateTime LastModified
Definition: share_responses.hpp:153
Azure::Storage::Files::Shares::Models::DownloadFileDetails::CopyStatus
Nullable< Models::CopyStatus > CopyStatus
Definition: share_responses.hpp:76
Azure::Storage::Files::Shares::ShareDirectoryClient
Definition: share_directory_client.hpp:22
Azure::Storage::Files::Shares::Models::DownloadFileDetails::ETag
Azure::ETag ETag
Definition: share_responses.hpp:36
Azure::Storage::Files::Shares::StartFileCopyOperation::Value
Models::FileProperties Value() const override
Get the Azure::Storage::Files::Shares::Models::FileProperties object which includes the latest copy i...
Definition: share_responses.hpp:218
Azure::Storage::Files::Shares::Models::DownloadFileDetails::LeaseState
Nullable< Models::LeaseState > LeaseState
Definition: share_responses.hpp:96
Azure::Storage::Files::Shares::Models::DownloadFileDetails::LastModified
DateTime LastModified
Definition: share_responses.hpp:41
Azure::Storage::Files::Shares::Models::ForceCloseFileHandleResult
The information returned when forcing a file handle to close.
Definition: share_responses.hpp:191
Azure::Storage::Files::Shares::ListFileHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareFileClient::ListHandles.
Definition: share_responses.hpp:327
Azure::Storage::Files::Shares::ListFilesAndDirectoriesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::ListFilesAndDirectories.
Definition: share_options.hpp:253
Azure::Storage::Files::Shares::Models::FileProperties
The serialized return result for operation: GetFileProperties.
Definition: share_rest_client.hpp:1169
Azure::Storage::Files::Shares::ForceCloseAllDirectoryHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareDirectoryClient::ForceCloseAllHandles.
Definition: share_responses.hpp:395
Azure::Storage::Files::Shares::Models::DownloadFileToResult::Details
DownloadFileDetails Details
Definition: share_responses.hpp:184
Azure::Storage::Files::Shares::Models::FileSmbProperties
The SMB related properties of the file.
Definition: share_rest_client.hpp:75
Azure::Storage::Files::Shares::ForceCloseAllDirectoryHandlesPagedResponse::NumberOfHandlesFailedToClose
int32_t NumberOfHandlesFailedToClose
Definition: share_responses.hpp:404
Azure::Storage::Files::Shares::Models::DownloadFileResult::FileSize
int64_t FileSize
Definition: share_responses.hpp:122
Azure::Storage::Files::Shares::ForceCloseAllFileHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareFileClient::ForceCloseAllHandles.
Definition: share_responses.hpp:348
Azure::Storage::Files::Shares::ForceCloseAllFileHandlesPagedResponse::NumberOfHandlesClosed
int32_t NumberOfHandlesClosed
Definition: share_responses.hpp:353
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::ShareSnapshot
std::string ShareSnapshot
Definition: share_responses.hpp:295
Azure::Storage::Files::Shares::ListSharesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareServiceClient::ListShares.
Definition: share_responses.hpp:252
Azure::Storage::Files::Shares::Models::DownloadFileToResult
The information returned when downloading a file to a destination.
Definition: share_responses.hpp:165
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::Files
std::vector< Models::FileItem > Files
Definition: share_responses.hpp:311
Azure::Storage::Files::Shares::Models::DownloadFileDetails::CopyProgress
Nullable< std::string > CopyProgress
Definition: share_responses.hpp:66
Azure::Storage::Files::Shares::ListSharesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareServiceClient::ListShares.
Definition: share_options.hpp:34
Azure::Storage::Files::Shares::Models::DownloadFileToResult::ContentRange
Azure::Core::Http::HttpRange ContentRange
Definition: share_responses.hpp:174
Azure::Storage::Files::Shares::Models::DownloadFileResult
The content and information returned when downloading a file.
Definition: share_responses.hpp:108
Azure::Storage::Files::Shares::Models::DownloadFileDetails::CopyStatusDescription
Nullable< std::string > CopyStatusDescription
Definition: share_responses.hpp:56
Azure::Storage::Files::Shares::Models::DownloadFileResult::Details
DownloadFileDetails Details
Definition: share_responses.hpp:137
Azure::Storage::Files::Shares::Models::DownloadFileDetails::SmbProperties
FileSmbProperties SmbProperties
Definition: share_responses.hpp:86
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::DirectoryPath
std::string DirectoryPath
Definition: share_responses.hpp:299
Azure::Storage::Files::Shares::Models::DownloadFileResult::TransactionalContentHash
Nullable< Storage::ContentHash > TransactionalContentHash
Definition: share_responses.hpp:127
Azure::Storage::Files::Shares::ListSharesPagedResponse::Shares
std::vector< Models::ShareItem > Shares
Definition: share_responses.hpp:265
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::ServiceEndpoint
std::string ServiceEndpoint
Definition: share_responses.hpp:287
Azure::Storage::Files::Shares::Models::ForceCloseDirectoryHandleResult
The information returned when forcing the directory handles to close.
Definition: share_responses.hpp:25
Azure::Storage::Files::Shares::ListSharesPagedResponse::Prefix
std::string Prefix
Definition: share_responses.hpp:261
Azure::Storage::Files::Shares::Models::DownloadFileDetails::LeaseStatus
Nullable< Models::LeaseStatus > LeaseStatus
Definition: share_responses.hpp:101
Azure::Storage::Files::Shares::ListFileHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::ListHandles.
Definition: share_options.hpp:571
Azure::Storage::Files::Shares::ForceCloseAllFileHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::ForceCloseAllHandles.
Definition: share_options.hpp:601
Azure::Storage::Files::Shares::Models::ClearFileRangeResult
The information returned when clearing a range in the file.
Definition: share_responses.hpp:144
Azure::Storage::Files::Shares::Models::DownloadFileResult::ContentRange
Azure::Core::Http::HttpRange ContentRange
Definition: share_responses.hpp:117
Azure::Storage::Files::Shares::Models::UploadFileFromResult
The information returned when uploading a file from a source.
Definition: share_responses.hpp:198
Azure::Storage::Files::Shares::Models::DownloadFileDetails::CopyId
Nullable< std::string > CopyId
Definition: share_responses.hpp:61
Azure::Storage::Files::Shares::ShareServiceClient
Definition: share_service_client.hpp:21
Azure::Storage::Files::Shares::Models::DownloadFileDetails
The detailed information returned when downloading a file.
Definition: share_responses.hpp:32
Azure::Storage::Files::Shares::ForceCloseAllDirectoryHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::ForceCloseAllHandles.
Definition: share_options.hpp:317
Azure::Storage::Files::Shares::ShareFileClient
Definition: share_file_client.hpp:21
Azure::Storage::Files::Shares::ListFileHandlesPagedResponse::FileHandles
std::vector< Models::HandleItem > FileHandles
Definition: share_responses.hpp:332
Azure::Storage::Files::Shares::Models::DownloadFileToResult::FileSize
int64_t FileSize
Definition: share_responses.hpp:169
Azure::Storage::Files::Shares::Models::DownloadFileDetails::CopyCompletedOn
Nullable< DateTime > CopyCompletedOn
Definition: share_responses.hpp:51
Azure::Storage::Files::Shares::ForceCloseAllFileHandlesPagedResponse::NumberOfHandlesFailedToClose
int32_t NumberOfHandlesFailedToClose
Definition: share_responses.hpp:357
Azure::Storage::Files::Shares::Models::DownloadFileResult::HttpHeaders
FileHttpHeaders HttpHeaders
Definition: share_responses.hpp:132
Azure::Storage::Files::Shares::ListDirectoryHandlesPagedResponse::DirectoryHandles
std::vector< Models::HandleItem > DirectoryHandles
Definition: share_responses.hpp:378
Azure::Storage::Files::Shares::Models::ClearFileRangeResult::ETag
Azure::ETag ETag
Definition: share_responses.hpp:148
Azure::Storage::Files::Shares::ListSharesPagedResponse::ServiceEndpoint
std::string ServiceEndpoint
Definition: share_responses.hpp:257
Azure::Storage::Files::Shares::ListDirectoryHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareDirectoryClient::ListHandles.
Definition: share_responses.hpp:373
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::Directories
std::vector< Models::DirectoryItem > Directories
Definition: share_responses.hpp:307
Azure::Storage::Files::Shares::StartFileCopyOperation
A long-running operation to copy a file.
Definition: share_responses.hpp:210
Azure::Storage::Files::Shares::Models::DownloadFileDetails::LeaseDuration
Nullable< Models::LeaseDuration > LeaseDuration
Definition: share_responses.hpp:91
Azure::Storage::Files::Shares::Models::DownloadFileDetails::Metadata
Storage::Metadata Metadata
Definition: share_responses.hpp:46
Azure::Storage::Files::Shares::Models::ClearFileRangeResult::IsServerEncrypted
bool IsServerEncrypted
Definition: share_responses.hpp:158
Azure::Storage::Files::Shares::Models::UploadFileFromResult::IsServerEncrypted
bool IsServerEncrypted
Definition: share_responses.hpp:202
Azure::Storage::Files::Shares::Models::FileHttpHeaders
The common HTTP headers.
Definition: share_rest_client.hpp:38
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareDirectoryClient::ListFilesAndDirectories.
Definition: share_responses.hpp:282
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::Prefix
std::string Prefix
Definition: share_responses.hpp:303
Azure::Storage::Files::Shares::Models::DownloadFileDetails::IsServerEncrypted
bool IsServerEncrypted
Definition: share_responses.hpp:81
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse::ShareName
std::string ShareName
Definition: share_responses.hpp:291
Azure::Storage::Files::Shares::ListDirectoryHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::ListHandles.
Definition: share_options.hpp:281
Azure::Storage::Files::Shares::Models::DownloadFileToResult::HttpHeaders
FileHttpHeaders HttpHeaders
Definition: share_responses.hpp:179
Azure::Storage::Files::Shares::ForceCloseAllDirectoryHandlesPagedResponse::NumberOfHandlesClosed
int32_t NumberOfHandlesClosed
Definition: share_responses.hpp:400
Azure::Storage::Files::Shares::Models::DownloadFileResult::BodyStream
std::unique_ptr< Azure::Core::IO::BodyStream > BodyStream
Definition: share_responses.hpp:112