azure-storage-files-shares
share_directory_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_options.hpp"
16 #include "azure/storage/files/shares/share_responses.hpp"
17 
18 namespace Azure { namespace Storage { namespace Files { namespace Shares {
19 
20  class ShareFileClient;
21 
22  class ShareDirectoryClient final {
23  public:
34  const std::string& connectionString,
35  const std::string& shareName,
36  const std::string& directoryName,
37  const ShareClientOptions& options = ShareClientOptions());
38 
45  explicit ShareDirectoryClient(
46  const std::string& shareDirectoryUrl,
47  std::shared_ptr<StorageSharedKeyCredential> credential,
48  const ShareClientOptions& options = ShareClientOptions());
49 
56  explicit ShareDirectoryClient(
57  const std::string& shareDirectoryUrl,
58  const ShareClientOptions& options = ShareClientOptions());
59 
65  std::string GetUrl() const { return m_shareDirectoryUrl.GetAbsoluteUrl(); }
66 
74  ShareDirectoryClient GetSubdirectoryClient(const std::string& subdirectoryName) const;
75 
82  ShareFileClient GetFileClient(const std::string& fileName) const;
83 
93  ShareDirectoryClient WithShareSnapshot(const std::string& shareSnapshot) const;
94 
102  Azure::Response<Models::CreateDirectoryResult> Create(
104  const Azure::Core::Context& context = Azure::Core::Context()) const;
105 
113  Azure::Response<Models::CreateDirectoryResult> CreateIfNotExists(
115  const Azure::Core::Context& context = Azure::Core::Context()) const;
116 
124  Azure::Response<Models::DeleteDirectoryResult> Delete(
126  const Azure::Core::Context& context = Azure::Core::Context()) const;
127 
137  Azure::Response<Models::DeleteDirectoryResult> DeleteIfExists(
139  const Azure::Core::Context& context = Azure::Core::Context()) const;
140 
148  Azure::Response<Models::DirectoryProperties> GetProperties(
150  const Azure::Core::Context& context = Azure::Core::Context()) const;
151 
160  Azure::Response<Models::SetDirectoryPropertiesResult> SetProperties(
161  Models::FileSmbProperties smbProperties,
163  const Azure::Core::Context& context = Azure::Core::Context()) const;
164 
174  Azure::Response<Models::SetDirectoryMetadataResult> SetMetadata(
175  Storage::Metadata metadata,
177  const Azure::Core::Context& context = Azure::Core::Context()) const;
178 
189  const Azure::Core::Context& context = Azure::Core::Context()) const;
190 
200  const Azure::Core::Context& context = Azure::Core::Context()) const;
201 
210  Azure::Response<Models::ForceCloseDirectoryHandleResult> ForceCloseHandle(
211  const std::string& handleId,
213  const Azure::Core::Context& context = Azure::Core::Context()) const;
214 
226  const Azure::Core::Context& context = Azure::Core::Context()) const;
227 
228  private:
229  Azure::Core::Url m_shareDirectoryUrl;
230  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> m_pipeline;
231 
232  explicit ShareDirectoryClient(
233  Azure::Core::Url shareDirectoryUrl,
234  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> pipeline)
235  : m_shareDirectoryUrl(std::move(shareDirectoryUrl)), m_pipeline(std::move(pipeline))
236  {
237  }
238 
239  friend class ShareClient;
240  };
241 }}}} // namespace Azure::Storage::Files::Shares
Azure::Storage::Files::Shares::ShareDirectoryClient::SetProperties
Azure::Response< Models::SetDirectoryPropertiesResult > SetProperties(Models::FileSmbProperties smbProperties, const SetDirectoryPropertiesOptions &options=SetDirectoryPropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the properties of the directory.
Definition: share_directory_client.cpp:237
Azure::Storage::Files::Shares::ShareDirectoryClient::GetUrl
std::string GetUrl() const
Gets the directory's primary URL endpoint.
Definition: share_directory_client.hpp:65
Azure::Storage::Files::Shares::ShareDirectoryClient
Definition: share_directory_client.hpp:22
Azure::Storage::Files::Shares::ShareDirectoryClient::SetMetadata
Azure::Response< Models::SetDirectoryMetadataResult > SetMetadata(Storage::Metadata metadata, const SetDirectoryMetadataOptions &options=SetDirectoryMetadataOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the metadata of the directory.
Definition: share_directory_client.cpp:278
Azure::Storage::Files::Shares::ShareDirectoryClient::ForceCloseHandle
Azure::Response< Models::ForceCloseDirectoryHandleResult > ForceCloseHandle(const std::string &handleId, const ForceCloseDirectoryHandleOptions &options=ForceCloseDirectoryHandleOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Closes a handle opened on a directory at the service.
Definition: share_directory_client.cpp:349
Azure::Storage::Files::Shares::ListFilesAndDirectoriesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::ListFilesAndDirectories.
Definition: share_options.hpp:253
Azure::Storage::Files::Shares::ForceCloseAllDirectoryHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareDirectoryClient::ForceCloseAllHandles.
Definition: share_responses.hpp:395
Azure::Storage::Files::Shares::Models::FileSmbProperties
The SMB related properties of the file.
Definition: share_rest_client.hpp:75
Azure::Storage::Files::Shares::SetDirectoryPropertiesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::SetProperties.
Definition: share_options.hpp:230
Azure::Storage::Files::Shares::ShareDirectoryClient::ListHandles
ListDirectoryHandlesPagedResponse ListHandles(const ListDirectoryHandlesOptions &options=ListDirectoryHandlesOptions(), 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_directory_client.cpp:323
Azure::Storage::Files::Shares::CreateDirectoryOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::Create.
Definition: share_options.hpp:192
Azure::Storage::Files::Shares::ShareDirectoryClient::Create
Azure::Response< Models::CreateDirectoryResult > Create(const CreateDirectoryOptions &options=CreateDirectoryOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates the directory.
Definition: share_directory_client.cpp:115
Azure::Storage::Files::Shares::GetDirectoryPropertiesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::GetProperties.
Definition: share_options.hpp:222
Azure::Storage::Files::Shares::ShareDirectoryClient::ListFilesAndDirectories
ListFilesAndDirectoriesPagedResponse ListFilesAndDirectories(const ListFilesAndDirectoriesOptions &options=ListFilesAndDirectoriesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Returns a sequence of files and subdirectories in this directory. Enumerating the files and directori...
Definition: share_directory_client.cpp:290
Azure::Storage::Files::Shares::ShareDirectoryClient::GetProperties
Azure::Response< Models::DirectoryProperties > GetProperties(const GetDirectoryPropertiesOptions &options=GetDirectoryPropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the properties of the directory.
Definition: share_directory_client.cpp:227
Azure::Storage::Files::Shares::DeleteDirectoryOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::Delete.
Definition: share_options.hpp:214
Azure::Storage::Files::Shares::ShareDirectoryClient::GetSubdirectoryClient
ShareDirectoryClient GetSubdirectoryClient(const std::string &subdirectoryName) const
Create a ShareDirectoryClient that's a sub directory of the current ShareDirectoryClient.
Definition: share_directory_client.cpp:84
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::ShareDirectoryClient::GetFileClient
ShareFileClient GetFileClient(const std::string &fileName) const
Create a ShareFileClient from current ShareDirectoryClient.
Definition: share_directory_client.cpp:92
Azure::Storage::Files::Shares::ShareDirectoryClient::CreateIfNotExists
Azure::Response< Models::CreateDirectoryResult > CreateIfNotExists(const CreateDirectoryOptions &options=CreateDirectoryOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates the directory if it does not exist.
Definition: share_directory_client.cpp:169
Azure::Storage::Files::Shares::ShareDirectoryClient::ForceCloseAllHandles
ForceCloseAllDirectoryHandlesPagedResponse ForceCloseAllHandles(const ForceCloseAllDirectoryHandlesOptions &options=ForceCloseAllDirectoryHandlesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Closes all handles opened on a directory at the service. Optionally supports recursively closing hand...
Definition: share_directory_client.cpp:364
Azure::Storage::Files::Shares::ForceCloseDirectoryHandleOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::ForceCloseHandle.
Definition: share_options.hpp:309
Azure::Storage::Files::Shares::SetDirectoryMetadataOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::SetMetadata.
Definition: share_options.hpp:245
Azure::Storage::Files::Shares::ListDirectoryHandlesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareDirectoryClient::ListHandles.
Definition: share_responses.hpp:373
Azure::Storage::Files::Shares::ShareDirectoryClient::DeleteIfExists
Azure::Response< Models::DeleteDirectoryResult > DeleteIfExists(const DeleteDirectoryOptions &options=DeleteDirectoryOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the directory if it exists.
Definition: share_directory_client.cpp:205
Azure::Storage::Files::Shares::ListFilesAndDirectoriesPagedResponse
Response type for Azure::Storage::Files::Shares::ShareDirectoryClient::ListFilesAndDirectories.
Definition: share_responses.hpp:282
Azure::Storage::Files::Shares::ShareDirectoryClient::Delete
Azure::Response< Models::DeleteDirectoryResult > Delete(const DeleteDirectoryOptions &options=DeleteDirectoryOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the directory.
Definition: share_directory_client.cpp:191
Azure::Storage::Files::Shares::ShareDirectoryClient::WithShareSnapshot
ShareDirectoryClient WithShareSnapshot(const std::string &shareSnapshot) const
Initializes a new instance of the ShareDirectoryClient class with an identical URL source but the spe...
Definition: share_directory_client.cpp:99
Azure::Storage::Files::Shares::ShareDirectoryClient::CreateFromConnectionString
static ShareDirectoryClient CreateFromConnectionString(const std::string &connectionString, const std::string &shareName, const std::string &directoryName, const ShareClientOptions &options=ShareClientOptions())
Create A ShareDirectoryClient from connection string to manage a File Share Directory resource.
Definition: share_directory_client.cpp:21
Azure::Storage::Files::Shares::ShareDirectoryClient::ShareDirectoryClient
ShareDirectoryClient(const std::string &shareDirectoryUrl, std::shared_ptr< StorageSharedKeyCredential > credential, const ShareClientOptions &options=ShareClientOptions())
Initialize a new instance of ShareDirectoryClient using shared key authentication.
Definition: share_directory_client.cpp:43
Azure::Storage::Files::Shares::ListDirectoryHandlesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareDirectoryClient::ListHandles.
Definition: share_options.hpp:281
Azure::Storage::Files::Shares::ShareClientOptions
Client options used to initialize share clients.
Definition: share_options.hpp:22