Response ShareClient::GetProperties()

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));
    }