From 0127ddae91c20ac73dc5cbba9828796ba2d7a0ef Mon Sep 17 00:00:00 2001 From: JinmingHu Date: Wed, 13 Jan 2021 09:35:35 +0800 Subject: [PATCH] void specialization of Response (#1331) * void specialization of Response * changelog: --- sdk/core/azure-core/CHANGELOG.md | 1 + .../azure-core/inc/azure/core/response.hpp | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/sdk/core/azure-core/CHANGELOG.md b/sdk/core/azure-core/CHANGELOG.md index 3c13cf289..a8309cabe 100644 --- a/sdk/core/azure-core/CHANGELOG.md +++ b/sdk/core/azure-core/CHANGELOG.md @@ -11,6 +11,7 @@ - Added default constructor to `DateTime`. - Added `DateTime` supporting dates since 0001. - Added Base64 encoding and decoding utility APIs to the `Azure::Core` namespace available from `azure/core/base64.hpp`. +- Added `Http::Response` template specialization. ### Breaking Changes diff --git a/sdk/core/azure-core/inc/azure/core/response.hpp b/sdk/core/azure-core/inc/azure/core/response.hpp index 2389164e7..4fab68f27 100644 --- a/sdk/core/azure-core/inc/azure/core/response.hpp +++ b/sdk/core/azure-core/inc/azure/core/response.hpp @@ -95,4 +95,36 @@ namespace Azure { namespace Core { return std::move(this->m_rawResponse); } }; + + /** + * @brief Wraps raw HTTP response into a response of a void type. + */ + template <> class Response { + std::unique_ptr m_rawResponse; + + public: + /** + * @brief Initialize a #Response with a raw response. + * + * @param rawResponse Raw HTTP response. + */ + explicit Response(std::unique_ptr&& rawResponse) + : m_rawResponse(std::move(rawResponse)) + { + } + + /** + * @brief Get raw HTTP response. + */ + // Do not give up raw response ownership. + Http::RawResponse& GetRawResponse() { return *this->m_rawResponse; } + + /** + * @brief Get a smart pointer rvalue reference to the value of a specific type. + */ + std::unique_ptr&& ExtractRawResponse() + { + return std::move(this->m_rawResponse); + } + }; }} // namespace Azure::Core