diff --git a/sdk/storage/azure-storage-blobs/CHANGELOG.md b/sdk/storage/azure-storage-blobs/CHANGELOG.md index 57d8099e6..df5d70b4b 100644 --- a/sdk/storage/azure-storage-blobs/CHANGELOG.md +++ b/sdk/storage/azure-storage-blobs/CHANGELOG.md @@ -9,6 +9,8 @@ ### Breaking Changes - `UserDelegationKey` was changed to a member of `GetUserDelegationKeyResult` rather than a typedef like before. +- `AccessType` in `CreateBlobContainerOptions` was changed to non-nullable. +- `ListType` in `GetBlockListOptions` was changed to non-nullable. ## 12.0.0-beta.6 (2020-01-14) diff --git a/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/blob_options.hpp b/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/blob_options.hpp index 841fac444..57d8f1a9f 100644 --- a/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/blob_options.hpp +++ b/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/blob_options.hpp @@ -286,7 +286,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @brief Specifies whether data in the container may be accessed publicly and the level * of access. */ - Azure::Core::Nullable AccessType; + Models::PublicAccessType AccessType = Models::PublicAccessType::Private; /** * @brief Name-value pairs to associate with the container as metadata. @@ -438,7 +438,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @brief Specifies whether data in the container may be accessed publicly and the level * of access. */ - Azure::Core::Nullable AccessType; + Models::PublicAccessType AccessType = Models::PublicAccessType::Private; /** * @brief Stored access policies that you can use to provide fine grained control over @@ -1080,7 +1080,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @brief Specifies whether to return the list of committed blocks, the list of uncommitted * blocks, or both lists together. */ - Azure::Core::Nullable ListType; + Models::BlockListTypeOption ListType = Models::BlockListTypeOption::Committed; /** * @brief Optional conditions that must be met to perform this operation. diff --git a/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp b/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp index 81d917b9c..5f677fb0f 100644 --- a/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp +++ b/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp @@ -3055,7 +3055,7 @@ namespace Azure { namespace Storage { namespace Blobs { struct CreateBlobContainerOptions { Azure::Core::Nullable Timeout; - Azure::Core::Nullable AccessType; + PublicAccessType AccessType = PublicAccessType::Private; Storage::Metadata Metadata; Azure::Core::Nullable DefaultEncryptionScope; Azure::Core::Nullable PreventEncryptionScopeOverride; @@ -3081,9 +3081,9 @@ namespace Azure { namespace Storage { namespace Blobs { { request.AddHeader("x-ms-meta-" + pair.first, pair.second); } - if (options.AccessType.HasValue()) + if (!options.AccessType.Get().empty()) { - request.AddHeader("x-ms-blob-public-access", options.AccessType.GetValue().Get()); + request.AddHeader("x-ms-blob-public-access", options.AccessType.Get()); } if (options.DefaultEncryptionScope.HasValue()) { @@ -3529,8 +3529,12 @@ namespace Azure { namespace Storage { namespace Blobs { response.LastModified = Azure::Core::DateTime::Parse( httpResponse.GetHeaders().at("last-modified"), Azure::Core::DateTime::DateFormat::Rfc1123); - response.AccessType - = PublicAccessType(httpResponse.GetHeaders().at("x-ms-blob-public-access")); + auto x_ms_blob_public_access__iterator + = httpResponse.GetHeaders().find("x-ms-blob-public-access"); + if (x_ms_blob_public_access__iterator != httpResponse.GetHeaders().end()) + { + response.AccessType = PublicAccessType(x_ms_blob_public_access__iterator->second); + } return Azure::Core::Response( std::move(response), std::move(pHttpResponse)); } @@ -3538,7 +3542,7 @@ namespace Azure { namespace Storage { namespace Blobs { struct SetBlobContainerAccessPolicyOptions { Azure::Core::Nullable Timeout; - Azure::Core::Nullable AccessType; + PublicAccessType AccessType = PublicAccessType::Private; Azure::Core::Nullable LeaseId; Azure::Core::Nullable IfModifiedSince; Azure::Core::Nullable IfUnmodifiedSince; @@ -3572,9 +3576,9 @@ namespace Azure { namespace Storage { namespace Blobs { } request.GetUrl().AppendQueryParameter("restype", "container"); request.GetUrl().AppendQueryParameter("comp", "acl"); - if (options.AccessType.HasValue()) + if (!options.AccessType.Get().empty()) { - request.AddHeader("x-ms-blob-public-access", options.AccessType.GetValue().Get()); + request.AddHeader("x-ms-blob-public-access", options.AccessType.Get()); } if (options.LeaseId.HasValue()) { @@ -7491,7 +7495,7 @@ namespace Azure { namespace Storage { namespace Blobs { struct GetBlockListOptions { Azure::Core::Nullable Timeout; - Azure::Core::Nullable ListType; + BlockListTypeOption ListType = BlockListTypeOption::Committed; Azure::Core::Nullable LeaseId; Azure::Core::Nullable IfTags; }; // struct GetBlockListOptions @@ -7505,12 +7509,8 @@ namespace Azure { namespace Storage { namespace Blobs { unused(options); auto request = Azure::Core::Http::Request(Azure::Core::Http::HttpMethod::Get, url); request.GetUrl().AppendQueryParameter("comp", "blocklist"); - if (options.ListType.HasValue()) - { - request.GetUrl().AppendQueryParameter( - "blocklisttype", - Storage::Details::UrlEncodeQueryParameter(options.ListType.GetValue().Get())); - } + request.GetUrl().AppendQueryParameter( + "blocklisttype", Storage::Details::UrlEncodeQueryParameter(options.ListType.Get())); request.AddHeader("x-ms-version", "2020-02-10"); if (options.Timeout.HasValue()) { diff --git a/sdk/storage/azure-storage-blobs/test/blob_container_client_test.cpp b/sdk/storage/azure-storage-blobs/test/blob_container_client_test.cpp index d918f4519..38d422e7a 100644 --- a/sdk/storage/azure-storage-blobs/test/blob_container_client_test.cpp +++ b/sdk/storage/azure-storage-blobs/test/blob_container_client_test.cpp @@ -406,7 +406,7 @@ namespace Azure { namespace Storage { namespace Test { EXPECT_FALSE(ret2->RequestId.empty()); EXPECT_EQ(ret2->ETag, ret->ETag); EXPECT_EQ(ret2->LastModified, ret->LastModified); - EXPECT_EQ(ret2->AccessType, options.AccessType.GetValue()); + EXPECT_EQ(ret2->AccessType, options.AccessType); EXPECT_EQ(ret2->SignedIdentifiers, options.SignedIdentifiers); container_client.Delete();