azure-storage-files-shares
share_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/response.hpp>
10 #include <azure/storage/common/storage_credential.hpp>
11 
12 #include "azure/storage/files/shares/protocol/share_rest_client.hpp"
13 #include "azure/storage/files/shares/share_options.hpp"
14 #include "azure/storage/files/shares/share_responses.hpp"
15 #include "azure/storage/files/shares/share_service_client.hpp"
16 
17 namespace Azure { namespace Storage { namespace Files { namespace Shares {
18 
19  class ShareDirectoryClient;
20 
21  class ShareClient final {
22  public:
31  const std::string& connectionString,
32  const std::string& shareName,
33  const ShareClientOptions& options = ShareClientOptions());
34 
41  explicit ShareClient(
42  const std::string& shareUrl,
43  std::shared_ptr<StorageSharedKeyCredential> credential,
44  const ShareClientOptions& options = ShareClientOptions());
45 
52  explicit ShareClient(
53  const std::string& shareUrl,
54  const ShareClientOptions& options = ShareClientOptions());
55 
61  std::string GetUrl() const { return m_shareUrl.GetAbsoluteUrl(); }
62 
71  ShareClient WithSnapshot(const std::string& snapshot) const;
72 
79 
87  Azure::Response<Models::CreateShareResult> Create(
88  const CreateShareOptions& options = CreateShareOptions(),
89  const Azure::Core::Context& context = Azure::Core::Context()) const;
90 
99  Azure::Response<Models::CreateShareResult> CreateIfNotExists(
100  const CreateShareOptions& options = CreateShareOptions(),
101  const Azure::Core::Context& context = Azure::Core::Context()) const;
102 
110  Azure::Response<Models::DeleteShareResult> Delete(
111  const DeleteShareOptions& options = DeleteShareOptions(),
112  const Azure::Core::Context& context = Azure::Core::Context()) const;
113 
121  Azure::Response<Models::DeleteShareResult> DeleteIfExists(
122  const DeleteShareOptions& options = DeleteShareOptions(),
123  const Azure::Core::Context& context = Azure::Core::Context()) const;
124 
132  Azure::Response<Models::CreateShareSnapshotResult> CreateSnapshot(
134  const Azure::Core::Context& context = Azure::Core::Context()) const;
135 
143  Azure::Response<Models::SetSharePropertiesResult> SetProperties(
145  const Azure::Core::Context& context = Azure::Core::Context()) const;
146 
154  Azure::Response<Models::ShareProperties> GetProperties(
156  const Azure::Core::Context& context = Azure::Core::Context()) const;
157 
166  Azure::Response<Models::SetShareMetadataResult> SetMetadata(
167  Storage::Metadata metadata,
169  const Azure::Core::Context& context = Azure::Core::Context()) const;
170 
178  Azure::Response<Models::ShareAccessPolicy> GetAccessPolicy(
180  const Azure::Core::Context& context = Azure::Core::Context()) const;
181 
190  Azure::Response<Models::SetShareAccessPolicyResult> SetAccessPolicy(
191  const std::vector<Models::SignedIdentifier>& accessPolicy,
193  const Azure::Core::Context& context = Azure::Core::Context()) const;
194 
202  Azure::Response<Models::ShareStatistics> GetStatistics(
204  const Azure::Core::Context& context = Azure::Core::Context()) const;
205 
214  Azure::Response<Models::CreateSharePermissionResult> CreatePermission(
215  const std::string& permission,
217  const Azure::Core::Context& context = Azure::Core::Context()) const;
218 
226  Azure::Response<std::string> GetPermission(
227  const std::string& permissionKey,
229  const Azure::Core::Context& context = Azure::Core::Context()) const;
230 
231  private:
232  Azure::Core::Url m_shareUrl;
233  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> m_pipeline;
234 
235  explicit ShareClient(
236  Azure::Core::Url shareUrl,
237  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> pipeline)
238  : m_shareUrl(std::move(shareUrl)), m_pipeline(std::move(pipeline))
239  {
240  }
241  friend class ShareLeaseClient;
242  friend class ShareServiceClient;
243  };
244 }}}} // namespace Azure::Storage::Files::Shares
Azure::Storage::Files::Shares::GetShareStatisticsOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::GetStatistics.
Definition: share_options.hpp:171
Azure::Storage::Files::Shares::ShareClient::CreateSnapshot
Azure::Response< Models::CreateShareSnapshotResult > CreateSnapshot(const CreateShareSnapshotOptions &options=CreateShareSnapshotOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a snapshot for the share.
Definition: share_client.cpp:175
Azure::Storage::Files::Shares::ShareDirectoryClient
Definition: share_directory_client.hpp:22
Azure::Storage::Files::Shares::SetShareMetadataOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::SetMetadata.
Definition: share_options.hpp:150
Azure::Storage::Files::Shares::ShareClient
Definition: share_client.hpp:21
Azure::Storage::Files::Shares::SetSharePropertiesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::SetProperties.
Definition: share_options.hpp:133
Azure::Storage::Files::Shares::GetShareAccessPolicyOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::GetAccessPolicy.
Definition: share_options.hpp:157
Azure::Storage::Files::Shares::GetSharePermissionOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::GetPermission.
Definition: share_options.hpp:185
Azure::Storage::Files::Shares::ShareClient::GetProperties
Azure::Response< Models::ShareProperties > GetProperties(const GetSharePropertiesOptions &options=GetSharePropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the properties of the share.
Definition: share_client.cpp:185
Azure::Storage::Files::Shares::ShareClient::ShareClient
ShareClient(const std::string &shareUrl, std::shared_ptr< StorageSharedKeyCredential > credential, const ShareClientOptions &options=ShareClientOptions())
Initialize a new instance of ShareClient using shared key authentication.
Definition: share_client.cpp:41
Azure::Storage::Files::Shares::ShareClient::WithSnapshot
ShareClient WithSnapshot(const std::string &snapshot) const
Initializes a new instance of the ShareClient class with an identical URL source but the specified sh...
Definition: share_client.cpp:85
Azure::Storage::Files::Shares::ShareClient::SetProperties
Azure::Response< Models::SetSharePropertiesResult > SetProperties(const SetSharePropertiesOptions &options=SetSharePropertiesOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the properties of the share.
Definition: share_client.cpp:195
Azure::Storage::Files::Shares::ShareClient::GetUrl
std::string GetUrl() const
Gets the share's primary URL endpoint.
Definition: share_client.hpp:61
Azure::Storage::Files::Shares::ShareClient::GetRootDirectoryClient
ShareDirectoryClient GetRootDirectoryClient() const
Gets the ShareDirectoryClient that's pointing to the root directory of current ShareClient.
Definition: share_client.cpp:80
Azure::Storage::Files::Shares::ShareClient::SetMetadata
Azure::Response< Models::SetShareMetadataResult > SetMetadata(Storage::Metadata metadata, const SetShareMetadataOptions &options=SetShareMetadataOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the metadata to the share.
Definition: share_client.cpp:206
Azure::Storage::Files::Shares::ShareClient::Create
Azure::Response< Models::CreateShareResult > Create(const CreateShareOptions &options=CreateShareOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates the file share.
Definition: share_client.cpp:100
Azure::Storage::Files::Shares::ShareClient::Delete
Azure::Response< Models::DeleteShareResult > Delete(const DeleteShareOptions &options=DeleteShareOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the file share.
Definition: share_client.cpp:138
Azure::Storage::Files::Shares::ShareClient::GetPermission
Azure::Response< std::string > GetPermission(const std::string &permissionKey, const GetSharePermissionOptions &options=GetSharePermissionOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the permission of the share using the specific key.
Definition: share_client.cpp:262
Azure::Storage::Files::Shares::ShareClient::CreateIfNotExists
Azure::Response< Models::CreateShareResult > CreateIfNotExists(const CreateShareOptions &options=CreateShareOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates the file share if it does not exist, nothing will happen if the file share already exists.
Definition: share_client.cpp:118
Azure::Storage::Files::Shares::ShareClient::CreateFromConnectionString
static ShareClient CreateFromConnectionString(const std::string &connectionString, const std::string &shareName, const ShareClientOptions &options=ShareClientOptions())
Create A ShareClient from connection string to manage a File Share resource.
Definition: share_client.cpp:22
Azure::Storage::Files::Shares::ShareClient::CreatePermission
Azure::Response< Models::CreateSharePermissionResult > CreatePermission(const std::string &permission, const CreateSharePermissionOptions &options=CreateSharePermissionOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Creates a permission on the share.
Definition: share_client.cpp:250
Azure::Storage::Files::Shares::CreateShareOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::Create.
Definition: share_options.hpp:82
Azure::Storage::Files::Shares::CreateSharePermissionOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::CreatePermission.
Definition: share_options.hpp:178
Azure::Storage::Files::Shares::SetShareAccessPolicyOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::SetAccessPolicy.
Definition: share_options.hpp:164
Azure::Storage::Files::Shares::GetSharePropertiesOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::GetProperties.
Definition: share_options.hpp:126
Azure::Storage::Files::Shares::ShareClient::DeleteIfExists
Azure::Response< Models::DeleteShareResult > DeleteIfExists(const DeleteShareOptions &options=DeleteShareOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Deletes the file share if it exists.
Definition: share_client.cpp:155
Azure::Storage::Files::Shares::CreateShareSnapshotOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::CreateSnapshot.
Definition: share_options.hpp:115
Azure::Storage::Files::Shares::ShareClient::GetStatistics
Azure::Response< Models::ShareStatistics > GetStatistics(const GetShareStatisticsOptions &options=GetShareStatisticsOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the stats of the share.
Definition: share_client.cpp:240
Azure::Storage::Files::Shares::ShareClient::SetAccessPolicy
Azure::Response< Models::SetShareAccessPolicyResult > SetAccessPolicy(const std::vector< Models::SignedIdentifier > &accessPolicy, const SetShareAccessPolicyOptions &options=SetShareAccessPolicyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Sets the access policy of the share.
Definition: share_client.cpp:228
Azure::Storage::Files::Shares::DeleteShareOptions
Optional parameters for Azure::Storage::Files::Shares::ShareClient::Delete.
Definition: share_options.hpp:104
Azure::Storage::Files::Shares::ShareClient::GetAccessPolicy
Azure::Response< Models::ShareAccessPolicy > GetAccessPolicy(const GetShareAccessPolicyOptions &options=GetShareAccessPolicyOptions(), const Azure::Core::Context &context=Azure::Core::Context()) const
Gets the access policy of the share.
Definition: share_client.cpp:218
Azure::Storage::Files::Shares::ShareClientOptions
Client options used to initialize share clients.
Definition: share_options.hpp:22