From a448c94052b59046a2c67455379bf1ff3a025bf0 Mon Sep 17 00:00:00 2001 From: JinmingHu Date: Mon, 26 Feb 2024 10:11:12 +0800 Subject: [PATCH] Parse storage error code for HEAD requests (#5372) * Error code for HEAD requests * clang-format * Recording --- sdk/storage/assets.json | 2 +- .../test/ut/blob_container_client_test.cpp | 21 +++++++++++++++++++ sdk/storage/azure-storage-common/CHANGELOG.md | 2 ++ .../src/storage_exception.cpp | 6 ++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/sdk/storage/assets.json b/sdk/storage/assets.json index 1ca6d58c9..8bb9febcd 100644 --- a/sdk/storage/assets.json +++ b/sdk/storage/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "cpp", "TagPrefix": "cpp/storage", - "Tag": "cpp/storage_f8b8f80b3c" + "Tag": "cpp/storage_265ef7508a" } diff --git a/sdk/storage/azure-storage-blobs/test/ut/blob_container_client_test.cpp b/sdk/storage/azure-storage-blobs/test/ut/blob_container_client_test.cpp index 9e0f3dc2f..a63d2015a 100644 --- a/sdk/storage/azure-storage-blobs/test/ut/blob_container_client_test.cpp +++ b/sdk/storage/azure-storage-blobs/test/ut/blob_container_client_test.cpp @@ -1468,4 +1468,25 @@ namespace Azure { namespace Storage { namespace Test { = Blobs::BlobContainerClient(m_blobContainerClient->GetUrl(), credential, clientOptions); EXPECT_THROW(containerClient.GetProperties(), StorageException); } + + TEST_F(BlobContainerClientTest, ErrorCode) + { + auto inexistent = m_blobContainerClient->GetBlobClient(RandomString()); + try + { + inexistent.GetProperties(); + } + catch (StorageException& e) + { + EXPECT_EQ(e.ErrorCode, "BlobNotFound"); + } + try + { + inexistent.Download(); + } + catch (StorageException& e) + { + EXPECT_EQ(e.ErrorCode, "BlobNotFound"); + } + } }}} // namespace Azure::Storage::Test diff --git a/sdk/storage/azure-storage-common/CHANGELOG.md b/sdk/storage/azure-storage-common/CHANGELOG.md index 592642c93..4cbc6d75c 100644 --- a/sdk/storage/azure-storage-common/CHANGELOG.md +++ b/sdk/storage/azure-storage-common/CHANGELOG.md @@ -10,6 +10,8 @@ ### Bugs Fixed +- Fixed a bug where exception error code was not parsed for `HEAD` requests. + ### Other Changes ### Acknowledgments diff --git a/sdk/storage/azure-storage-common/src/storage_exception.cpp b/sdk/storage/azure-storage-common/src/storage_exception.cpp index 2d6c971fc..55e303de6 100644 --- a/sdk/storage/azure-storage-common/src/storage_exception.cpp +++ b/sdk/storage/azure-storage-common/src/storage_exception.cpp @@ -141,6 +141,12 @@ namespace Azure { namespace Storage { } } + if (errorCode.empty() + && response->GetHeaders().find("x-ms-error-code") != response->GetHeaders().end()) + { + errorCode = response->GetHeaders().at("x-ms-error-code"); + } + StorageException result = StorageException( std::to_string(static_cast::type>( httpStatusCode))