in sdk/storage/azure-storage-files-shares/src/rest_client.cpp [1120:1276]
Response<Models::ShareProperties> ShareClient::GetProperties(
Core::Http::_internal::HttpPipeline& pipeline,
const Core::Url& url,
const GetSharePropertiesOptions& options,
const Core::Context& context)
{
auto request = Core::Http::Request(Core::Http::HttpMethod::Get, url);
request.GetUrl().AppendQueryParameter("restype", "share");
if (options.Sharesnapshot.HasValue() && !options.Sharesnapshot.Value().empty())
{
request.GetUrl().AppendQueryParameter(
"sharesnapshot", _internal::UrlEncodeQueryParameter(options.Sharesnapshot.Value()));
}
request.SetHeader("x-ms-version", "2025-05-05");
if (options.LeaseId.HasValue() && !options.LeaseId.Value().empty())
{
request.SetHeader("x-ms-lease-id", options.LeaseId.Value());
}
if (options.FileRequestIntent.HasValue()
&& !options.FileRequestIntent.Value().ToString().empty())
{
request.SetHeader("x-ms-file-request-intent", options.FileRequestIntent.Value().ToString());
}
auto pRawResponse = pipeline.Send(request, context);
auto httpStatusCode = pRawResponse->GetStatusCode();
if (httpStatusCode != Core::Http::HttpStatusCode::Ok)
{
throw StorageException::CreateFromResponse(std::move(pRawResponse));
}
Models::ShareProperties response;
for (auto i = pRawResponse->GetHeaders().lower_bound("x-ms-meta-");
i != pRawResponse->GetHeaders().end() && i->first.substr(0, 10) == "x-ms-meta-";
++i)
{
response.Metadata.emplace(i->first.substr(10), i->second);
}
response.ETag = ETag(pRawResponse->GetHeaders().at("ETag"));
response.LastModified = DateTime::Parse(
pRawResponse->GetHeaders().at("Last-Modified"), Azure::DateTime::DateFormat::Rfc1123);
response.Quota = std::stoll(pRawResponse->GetHeaders().at("x-ms-share-quota"));
if (pRawResponse->GetHeaders().count("x-ms-share-provisioned-iops") != 0)
{
response.ProvisionedIops
= std::stoi(pRawResponse->GetHeaders().at("x-ms-share-provisioned-iops"));
}
if (pRawResponse->GetHeaders().count("x-ms-share-provisioned-ingress-mbps") != 0)
{
response.ProvisionedIngressMBps
= std::stoi(pRawResponse->GetHeaders().at("x-ms-share-provisioned-ingress-mbps"));
}
if (pRawResponse->GetHeaders().count("x-ms-share-provisioned-egress-mbps") != 0)
{
response.ProvisionedEgressMBps
= std::stoi(pRawResponse->GetHeaders().at("x-ms-share-provisioned-egress-mbps"));
}
if (pRawResponse->GetHeaders().count("x-ms-share-next-allowed-quota-downgrade-time") != 0)
{
response.NextAllowedQuotaDowngradeTime = DateTime::Parse(
pRawResponse->GetHeaders().at("x-ms-share-next-allowed-quota-downgrade-time"),
Azure::DateTime::DateFormat::Rfc1123);
}
if (pRawResponse->GetHeaders().count("x-ms-share-provisioned-bandwidth-mibps") != 0)
{
response.ProvisionedBandwidthMBps
= std::stoi(pRawResponse->GetHeaders().at("x-ms-share-provisioned-bandwidth-mibps"));
}
if (pRawResponse->GetHeaders().count("x-ms-lease-duration") != 0)
{
response.LeaseDuration
= Models::LeaseDurationType(pRawResponse->GetHeaders().at("x-ms-lease-duration"));
}
if (pRawResponse->GetHeaders().count("x-ms-lease-state") != 0)
{
response.LeaseState = Models::LeaseState(pRawResponse->GetHeaders().at("x-ms-lease-state"));
}
if (pRawResponse->GetHeaders().count("x-ms-lease-status") != 0)
{
response.LeaseStatus
= Models::LeaseStatus(pRawResponse->GetHeaders().at("x-ms-lease-status"));
}
if (pRawResponse->GetHeaders().count("x-ms-access-tier") != 0)
{
response.AccessTier = Models::AccessTier(pRawResponse->GetHeaders().at("x-ms-access-tier"));
}
if (pRawResponse->GetHeaders().count("x-ms-access-tier-change-time") != 0)
{
response.AccessTierChangedOn = DateTime::Parse(
pRawResponse->GetHeaders().at("x-ms-access-tier-change-time"),
Azure::DateTime::DateFormat::Rfc1123);
}
if (pRawResponse->GetHeaders().count("x-ms-access-tier-transition-state") != 0)
{
response.AccessTierTransitionState
= pRawResponse->GetHeaders().at("x-ms-access-tier-transition-state");
}
if (pRawResponse->GetHeaders().count("x-ms-enabled-protocols") != 0)
{
response.EnabledProtocols
= Models::ShareProtocols(pRawResponse->GetHeaders().at("x-ms-enabled-protocols"));
}
if (pRawResponse->GetHeaders().count("x-ms-root-squash") != 0)
{
response.RootSquash
= Models::ShareRootSquash(pRawResponse->GetHeaders().at("x-ms-root-squash"));
}
if (pRawResponse->GetHeaders().count("x-ms-enable-snapshot-virtual-directory-access") != 0)
{
response.EnableSnapshotVirtualDirectoryAccess
= pRawResponse->GetHeaders().at("x-ms-enable-snapshot-virtual-directory-access")
== std::string("true");
}
if (pRawResponse->GetHeaders().count("x-ms-share-paid-bursting-enabled") != 0)
{
response.PaidBurstingEnabled
= pRawResponse->GetHeaders().at("x-ms-share-paid-bursting-enabled")
== std::string("true");
}
if (pRawResponse->GetHeaders().count("x-ms-share-paid-bursting-max-iops") != 0)
{
response.PaidBurstingMaxIops
= std::stoll(pRawResponse->GetHeaders().at("x-ms-share-paid-bursting-max-iops"));
}
if (pRawResponse->GetHeaders().count("x-ms-share-paid-bursting-max-bandwidth-mibps") != 0)
{
response.PaidBurstingMaxBandwidthMibps = std::stoll(
pRawResponse->GetHeaders().at("x-ms-share-paid-bursting-max-bandwidth-mibps"));
}
if (pRawResponse->GetHeaders().count("x-ms-share-included-burst-iops") != 0)
{
response.IncludedBurstIops
= std::stoll(pRawResponse->GetHeaders().at("x-ms-share-included-burst-iops"));
}
if (pRawResponse->GetHeaders().count("x-ms-share-max-burst-credits-for-iops") != 0)
{
response.MaxBurstCreditsForIops
= std::stoll(pRawResponse->GetHeaders().at("x-ms-share-max-burst-credits-for-iops"));
}
if (pRawResponse->GetHeaders().count(
"x-ms-share-next-allowed-provisioned-iops-downgrade-time")
!= 0)
{
response.NextAllowedProvisionedIopsDowngradeTime = DateTime::Parse(
pRawResponse->GetHeaders().at(
"x-ms-share-next-allowed-provisioned-iops-downgrade-time"),
Azure::DateTime::DateFormat::Rfc1123);
}
if (pRawResponse->GetHeaders().count(
"x-ms-share-next-allowed-provisioned-bandwidth-downgrade-time")
!= 0)
{
response.NextAllowedProvisionedBandwidthDowngradeTime = DateTime::Parse(
pRawResponse->GetHeaders().at(
"x-ms-share-next-allowed-provisioned-bandwidth-downgrade-time"),
Azure::DateTime::DateFormat::Rfc1123);
}
return Response<Models::ShareProperties>(std::move(response), std::move(pRawResponse));
}