void specialization of Response<T> (#1331)

* void specialization of Response<T>

* changelog:
This commit is contained in:
JinmingHu 2021-01-13 09:35:35 +08:00 committed by GitHub
parent 5de2ca7b3c
commit 0127ddae91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View File

@ -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<void>` template specialization.
### Breaking Changes

View File

@ -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<void> {
std::unique_ptr<Http::RawResponse> m_rawResponse;
public:
/**
* @brief Initialize a #Response<void> with a raw response.
*
* @param rawResponse Raw HTTP response.
*/
explicit Response(std::unique_ptr<Http::RawResponse>&& 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<Http::RawResponse>&& ExtractRawResponse()
{
return std::move(this->m_rawResponse);
}
};
}} // namespace Azure::Core