Add HTTP methods PATCH and PUT.

This commit is contained in:
tastytea 2020-01-11 16:07:40 +01:00
parent 5051664136
commit f556df296f
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
3 changed files with 83 additions and 1 deletions

View File

@ -161,6 +161,58 @@ public:
return post(endpoint, {});
}
/*!
* @brief Make a HTTP PATCH call with parameters.
*
* @param endpoint Endpoint as API::endpoint_type or `std::string_view`.
* @param parameters A map of parameters.
*
*
* @since 0.1.0
*/
[[nodiscard]]
answer_type patch(const endpoint_variant &endpoint,
const parametermap &parameters);
/*!
* @brief Make a HTTP PATCH call.
*
* @param endpoint Endpoint as API::endpoint_type or `std::string_view`.
*
* @since 0.1.0
*/
[[nodiscard]]
inline answer_type patch(const endpoint_variant &endpoint)
{
return post(endpoint, {});
}
/*!
* @brief Make a HTTP PUT call with parameters.
*
* @param endpoint Endpoint as API::endpoint_type or `std::string_view`.
* @param parameters A map of parameters.
*
*
* @since 0.1.0
*/
[[nodiscard]]
answer_type put(const endpoint_variant &endpoint,
const parametermap &parameters);
/*!
* @brief Make a HTTP PUT call.
*
* @param endpoint Endpoint as API::endpoint_type or `std::string_view`.
*
* @since 0.1.0
*/
[[nodiscard]]
inline answer_type put(const endpoint_variant &endpoint)
{
return post(endpoint, {});
}
/*!
* @brief Copy new stream contents and delete the original.
*

View File

@ -61,6 +61,20 @@ answer_type Connection::post(const endpoint_variant &endpoint,
endpoint_to_uri(endpoint), parameters);
}
answer_type Connection::patch(const endpoint_variant &endpoint,
const parametermap &parameters)
{
return make_request(http_method::PATCH,
endpoint_to_uri(endpoint), parameters);
}
answer_type Connection::put(const endpoint_variant &endpoint,
const parametermap &parameters)
{
return make_request(http_method::PUT,
endpoint_to_uri(endpoint), parameters);
}
string Connection::get_new_stream_contents()
{
buffer_mutex.lock();

View File

@ -111,14 +111,30 @@ answer_type CURLWrapper::make_request(const http_method &method, string uri,
}
case http_method::PATCH:
{
if (!parameters.empty())
{
curl_mime *mime{parameters_to_curl_mime(uri, parameters)};
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg)
code = curl_easy_setopt(_connection, CURLOPT_MIMEPOST, mime);
}
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg)
code = curl_easy_setopt(_connection, CURLOPT_CUSTOMREQUEST, "PATCH");
break;
}
case http_method::PUT:
{
if (!parameters.empty())
{
curl_mime *mime{parameters_to_curl_mime(uri, parameters)};
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg)
code = curl_easy_setopt(_connection, CURLOPT_MIMEPOST, mime);
}
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg)
code = curl_easy_setopt(_connection, CURLOPT_UPLOAD, 1L);
code = curl_easy_setopt(_connection, CURLOPT_CUSTOMREQUEST, "PUT");
break;
}
case http_method::DELETE: