azure-storage-files-shares
share_file_client.hpp
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
6 #include <memory>
7 #include <string>
8 
9 #include <azure/core/internal/http/pipeline.hpp>
10 #include <azure/core/response.hpp>
11 #include <azure/storage/common/storage_credential.hpp>
12 
13 #include "azure/storage/files/shares/protocol/share_rest_client.hpp"
14 #include "azure/storage/files/shares/share_client.hpp"
15 #include "azure/storage/files/shares/share_directory_client.hpp"
16 #include "azure/storage/files/shares/share_options.hpp"
17 #include "azure/storage/files/shares/share_responses.hpp"
18 
19 namespace Azure { namespace Storage { namespace Files { namespace Shares {
20 
21  class ShareFileClient final {
22  public:
33  const std::string& connectionString,
34  const std::string& shareName,
35  const std::string& fileName,
36  const ShareClientOptions& options = ShareClientOptions());
37 
44  explicit ShareFileClient(
45  const std::string& shareFileUrl,
46  std::shared_ptr<StorageSharedKeyCredential> credential,
47  const ShareClientOptions& options = ShareClientOptions());
48 
55  explicit ShareFileClient(
56  const std::string& shareFileUrl,
57  const ShareClientOptions& options = ShareClientOptions());
58 
64  std::string GetUrl() const { return m_shareFileUrl.GetAbsoluteUrl(); }
65 
75  ShareFileClient WithShareSnapshot(const std::string& shareSnapshot) const;
76 
85  Azure::Response<Models::CreateFileResult> Create(
86  int64_t fileSize,
87  const CreateFileOptions& options = CreateFileOptions(),
88  const Azure::Core::Context& context = Azure::Core::Context()) const;
89 
97  Azure::Response<Models::DeleteFileResult> Delete(
98  const DeleteFileOptions& options = DeleteFileOptions(),
99  const Azure::Core::Context& context = Azure::Core::Context()) const;
100 
108  Azure::Response<Models::DeleteFileResult> DeleteIfExists(
109  const DeleteFileOptions& options = DeleteFileOptions(),
110  const Azure::Core::Context& context = Azure::Core::Context()) const;
111 
120  Azure::Response<Models::DownloadFileResult> Download(
121  const DownloadFileOptions& options = DownloadFileOptions(),
122  const Azure::Core::Context& context = Azure::Core::Context()) const;
123 
136  Azure::Response<Models::DownloadFileToResult> DownloadTo(
137  uint8_t* buffer,
138  size_t bufferSize,
139  const DownloadFileToOptions& options = DownloadFileToOptions(),
140  const Azure::Core::Context& context = Azure::Core::Context()) const;
141 
152  Azure::Response<Models::DownloadFileToResult> DownloadTo(
153  const std::string& fileName,
154  const DownloadFileToOptions& options = DownloadFileToOptions(),
155  const Azure::Core::Context& context = Azure::Core::Context()) const;
156 
168  Azure::Response<Models::UploadFileFromResult> UploadFrom(
169  const uint8_t* buffer,
170  size_t bufferSize,
171  const UploadFileFromOptions& options = UploadFileFromOptions(),
172  const Azure::Core::Context& context = Azure::Core::Context()) const;
173 
184  Azure::Response<Models::UploadFileFromResult> UploadFrom(
185  const std::string& fileName,
186  const UploadFileFromOptions& options = UploadFileFromOptions(),
187  const Azure::Core::Context& context = Azure::Core::Context()) const;
188 
203  std::string copySource,
204  const StartFileCopyOptions& options = StartFileCopyOptions(),
205  const Azure::Core::Context& context = Azure::Core::Context()) const;
206 
216  Azure::Response<Models::AbortFileCopyResult> AbortCopy(
217  std::string copyId,
218  const AbortFileCopyOptions& options = AbortFileCopyOptions(),
219  const Azure::Core::Context& context = Azure::Core::Context()) const;
220 
228  Azure::Response<Models::FileProperties> GetProperties(
230  const Azure::Core::Context& context = Azure::Core::Context()) const;
231 
241  Azure::Response<Models::SetFilePropertiesResult> SetProperties(
242  const Models::FileHttpHeaders& httpHeaders,
243  const Models::FileSmbProperties& smbProperties,
245  const Azure::Core::Context& context = Azure::Core::Context()) const;
246 
256  Azure::Response<Models::SetFileMetadataResult> SetMetadata(
257  Storage::Metadata metadata,
259  const Azure::Core::Context& context = Azure::Core::Context()) const;
260 
269  Azure::Response<Models::UploadFileRangeResult> UploadRange(
270  int64_t offset,
271  Azure::Core::IO::BodyStream& content,
273  const Azure::Core::Context& context = Azure::Core::Context()) const;
274 
283  Azure::Response<Models::ClearFileRangeResult> ClearRange(
284  int64_t offset,
285  int64_t length,
286  const ClearFileRangeOptions& options = ClearFileRangeOptions(),
287  const Azure::Core::Context& context = Azure::Core::Context()) const;
288 
295  Azure::Response<Models::GetFileRangeListResult> GetRangeList(
297  const Azure::Core::Context& context = Azure::Core::Context()) const;
298 
307  Azure::Response<Models::GetFileRangeListResult> GetRangeListDiff(
308  std::string previousShareSnapshot,
310  const Azure::Core::Context& context = Azure::Core::Context()) const;
311 
321  const Azure::Core::Context& context = Azure::Core::Context()) const;
322 
331  Azure::Response<Models::ForceCloseFileHandleResult> ForceCloseHandle(
332  const std::string& handleId,
334  const Azure::Core::Context& context = Azure::Core::Context()) const;
335 
345  const Azure::Core::Context& context = Azure::Core::Context()) const;
346 
357  Azure::Response<Models::UploadFileRangeFromUriResult> UploadRangeFromUri(
358  int64_t destinationOffset,
359  const std::string& sourceUri,
360  const Azure::Core::Http::HttpRange& sourceRange,
362  const Azure::Core::Context& context = Azure::Core::Context()) const;
363 
364  private:
365  Azure::Core::Url m_shareFileUrl;
366  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> m_pipeline;
367 
368  explicit ShareFileClient(
369  Azure::Core::Url shareFileUrl,
370  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> pipeline)
371  : m_shareFileUrl(std::move(shareFileUrl)), m_pipeline(std::move(pipeline))
372  {
373  }
374 
375  friend class ShareClient;
376  friend class ShareDirectoryClient;
377  friend class ShareLeaseClient;
378  };
379 }}}} // namespace Azure::Storage::Files::Shares
Azure::Storage::Files::Shares::ShareFileClient::GetProperties
Azure::Response< Models::FileProperties > GetProperties(const GetFilePropertiesOptions &options=GetFilePropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the properties of a file.
Definition: share_file_client.cpp:385
Azure::Storage::Files::Shares::ShareFileClient::ForceCloseAllHandles
ForceCloseAllFileHandlesPagedResponse ForceCloseAllHandles(const ForceCloseAllFileHandlesOptions &options=ForceCloseAllFileHandlesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Closes all handles opened on a file at the service.
Definition: share_file_client.cpp:620
Azure::Storage::Files::Shares::ShareFileClient::Create
Azure::Response< Models::CreateFileResult > Create(int64_t fileSize, const CreateFileOptions &options=CreateFileOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates the file.
Definition: share_file_client.cpp:104
Azure::Storage::Files::Shares::SetFilePropertiesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::SetProperties.
Definition: share_options.hpp:469
Azure::Storage::Files::Shares::ShareFileClient::UploadRange
Azure::Response< Models::UploadFileRangeResult > UploadRange(int64_t offset, Azure::Core::IO::BodyStream &content, const UploadFileRangeOptions &options=UploadFileRangeOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Uploads some data to a range of the file.
Definition: share_file_client.cpp:477
Azure::Storage::Files::Shares::ListFileHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareFileClient::ListHandles.
Definition: share_responses.hpp:327
Azure::Storage::Files::Shares::Models::FileSmbProperties
The SMB related properties of the file.
Definition: share_rest_client.hpp:75
Azure::Storage::Files::Shares::ShareFileClient::StartCopy
StartFileCopyOperation StartCopy(std::string copySource, const StartFileCopyOptions &options=StartFileCopyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Starts copy the file specified from source URI to the file this client points to.
Definition: share_file_client.cpp:309
Azure::Storage::Files::Shares::ShareFileClient::GetUrl
std::string GetUrl() const
Gets the file's primary URL endpoint.
Definition: share_file_client.hpp:64
Azure::Storage::Files::Shares::SetFileMetadataOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::SetMetadata.
Definition: share_options.hpp:491
Azure::Storage::Files::Shares::ForceCloseAllFileHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareFileClient::ForceCloseAllHandles.
Definition: share_responses.hpp:348
Azure::Storage::Files::Shares::ShareFileClient::UploadRangeFromUri
Azure::Response< Models::UploadFileRangeFromUriResult > UploadRangeFromUri(int64_t destinationOffset, const std::string &sourceUri, const Azure::Core::Http::HttpRange &sourceRange, const UploadFileRangeFromUriOptions &options=UploadFileRangeFromUriOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Upload a range from the source URI to this file's specific range.
Definition: share_file_client.cpp:1084
Azure::Storage::Files::Shares::ShareFileClient::SetMetadata
Azure::Response< Models::SetFileMetadataResult > SetMetadata(Storage::Metadata metadata, const SetFileMetadataOptions &options=SetFileMetadataOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the metadata of the file.
Definition: share_file_client.cpp:465
Azure::Storage::Files::Shares::ShareFileClient::UploadFrom
Azure::Response< Models::UploadFileFromResult > UploadFrom(const uint8_t *buffer, size_t bufferSize, const UploadFileFromOptions &options=UploadFileFromOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a new file, or updates the content of an existing file. Updating an existing file overwrites ...
Definition: share_file_client.cpp:877
Azure::Storage::Files::Shares::ShareFileClient::ShareFileClient
ShareFileClient(const std::string &shareFileUrl, std::shared_ptr< StorageSharedKeyCredential > credential, const ShareClientOptions &options=ShareClientOptions())
Initialize a new instance of ShareFileClient using shared key authentication.
Definition: share_file_client.cpp:48
Azure::Storage::Files::Shares::DownloadFileToOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::DownloadTo.
Definition: share_options.hpp:615
Azure::Storage::Files::Shares::GetFileRangeListOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::GetRangeList.
Definition: share_options.hpp:555
Azure::Storage::Files::Shares::ListFileHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::ListHandles.
Definition: share_options.hpp:571
Azure::Storage::Files::Shares::ShareFileClient::ClearRange
Azure::Response< Models::ClearFileRangeResult > ClearRange(int64_t offset, int64_t length, const ClearFileRangeOptions &options=ClearFileRangeOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Clears some range of data within the file.
Definition: share_file_client.cpp:500
Azure::Storage::Files::Shares::ShareFileClient::Delete
Azure::Response< Models::DeleteFileResult > Delete(const DeleteFileOptions &options=DeleteFileOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the file.
Definition: share_file_client.cpp:187
Azure::Storage::Files::Shares::ShareFileClient::GetRangeList
Azure::Response< Models::GetFileRangeListResult > GetRangeList(const GetFileRangeListOptions &options=GetFileRangeListOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the list of valid range from the file within specified range.
Definition: share_file_client.cpp:527
Azure::Storage::Files::Shares::ShareFileClient::Download
Azure::Response< Models::DownloadFileResult > Download(const DownloadFileOptions &options=DownloadFileOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Open a stream for the file's content, or a range of the file's content that can be used to download t...
Definition: share_file_client.cpp:221
Azure::Storage::Files::Shares::ForceCloseAllFileHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::ForceCloseAllHandles.
Definition: share_options.hpp:601
Azure::Storage::Files::Shares::ShareFileClient::ForceCloseHandle
Azure::Response< Models::ForceCloseFileHandleResult > ForceCloseHandle(const std::string &handleId, const ForceCloseFileHandleOptions &options=ForceCloseFileHandleOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Closes a handle opened on a file at the service.
Definition: share_file_client.cpp:606
Azure::Storage::Files::Shares::StartFileCopyOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::StartCopy.
Definition: share_options.hpp:402
Azure::Storage::Files::Shares::ShareFileClient::DownloadTo
Azure::Response< Models::DownloadFileToResult > DownloadTo(uint8_t *buffer, size_t bufferSize, const DownloadFileToOptions &options=DownloadFileToOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Downloads a file or a file range from the service to a memory buffer using parallel requests.
Definition: share_file_client.cpp:646
Azure::Storage::Files::Shares::ShareFileClient::SetProperties
Azure::Response< Models::SetFilePropertiesResult > SetProperties(const Models::FileHttpHeaders &httpHeaders, const Models::FileSmbProperties &smbProperties, const SetFilePropertiesOptions &options=SetFilePropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the properties of the file, or resize a file specifying NewSize in options.
Definition: share_file_client.cpp:395
Azure::Storage::Files::Shares::UploadFileFromOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::UploadFrom.
Definition: share_options.hpp:649
Azure::Storage::Files::Shares::ShareFileClient::CreateFromConnectionString
static ShareFileClient CreateFromConnectionString(const std::string &connectionString, const std::string &shareName, const std::string &fileName, const ShareClientOptions &options=ShareClientOptions())
Create A ShareFileClient from connection string to manage a File Share File resource.
Definition: share_file_client.cpp:26
Azure::Storage::Files::Shares::ShareFileClient::WithShareSnapshot
ShareFileClient WithShareSnapshot(const std::string &shareSnapshot) const
Initializes a new instance of the ShareFileClient class with an identical URL source but the specifie...
Definition: share_file_client.cpp:89
Azure::Storage::Files::Shares::DownloadFileOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::Download.
Definition: share_options.hpp:380
Azure::Storage::Files::Shares::ShareFileClient
Definition: share_file_client.hpp:21
Azure::Storage::Files::Shares::ForceCloseFileHandleOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::ForceCloseHandle.
Definition: share_options.hpp:593
Azure::Storage::Files::Shares::DeleteFileOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::Delete.
Definition: share_options.hpp:369
Azure::Storage::Files::Shares::StartFileCopyOperation
A long-running operation to copy a file.
Definition: share_responses.hpp:210
Azure::Storage::Files::Shares::UploadFileRangeOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::UploadRange.
Definition: share_options.hpp:502
Azure::Storage::Files::Shares::AbortFileCopyOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::AbortCopy.
Definition: share_options.hpp:447
Azure::Storage::Files::Shares::CreateFileOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::Create.
Definition: share_options.hpp:337
Azure::Storage::Files::Shares::UploadFileRangeFromUriOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::UploadRangeFromUri.
Definition: share_options.hpp:533
Azure::Storage::Files::Shares::ShareFileClient::DeleteIfExists
Azure::Response< Models::DeleteFileResult > DeleteIfExists(const DeleteFileOptions &options=DeleteFileOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the file if it exists.
Definition: share_file_client.cpp:200
Azure::Storage::Files::Shares::Models::FileHttpHeaders
The common HTTP headers.
Definition: share_rest_client.hpp:38
Azure::Storage::Files::Shares::ClearFileRangeOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::ClearRange.
Definition: share_options.hpp:521
Azure::Storage::Files::Shares::ShareFileClient::GetRangeListDiff
Azure::Response< Models::GetFileRangeListResult > GetRangeListDiff(std::string previousShareSnapshot, const GetFileRangeListOptions &options=GetFileRangeListOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the list of valid range from the file within specified range that have changed since previousSha...
Definition: share_file_client.cpp:553
Azure::Storage::Files::Shares::ShareFileClient::AbortCopy
Azure::Response< Models::AbortFileCopyResult > AbortCopy(std::string copyId, const AbortFileCopyOptions &options=AbortFileCopyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Aborts copying the file specified with the copy ID.
Definition: share_file_client.cpp:373
Azure::Storage::Files::Shares::GetFilePropertiesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareFileClient::GetProperties.
Definition: share_options.hpp:458
Azure::Storage::Files::Shares::ShareFileClient::ListHandles
ListFileHandlesPagedResponse ListHandles(const ListFileHandlesOptions &options=ListFileHandlesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns a sequence of the open handles on a directory or a file. Enumerating the handles may make mul...
Definition: share_file_client.cpp:581
Azure::Storage::Files::Shares::ShareClientOptions
Client options used to initialize share clients.
Definition: share_options.hpp:22