1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-01 17:38:41 +00:00

Support HEAD and PATCH methods in http api

This commit is contained in:
sfan5 2025-04-26 15:17:25 +02:00
parent d937cd9b90
commit 893a74f9d7
5 changed files with 37 additions and 22 deletions

View file

@ -282,20 +282,28 @@ HTTPFetchOngoing::HTTPFetchOngoing(const HTTPFetchRequest &request_,
case HTTP_GET:
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
break;
case HTTP_HEAD:
// This is kinda pointless right now, since we don't return response headers (TODO?)
curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
break;
case HTTP_POST:
curl_easy_setopt(curl, CURLOPT_POST, 1);
break;
case HTTP_PUT:
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
break;
case HTTP_PATCH:
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PATCH");
break;
case HTTP_DELETE:
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
break;
}
const bool has_request_body = request.method != HTTP_GET && request.method != HTTP_HEAD;
// Set data from fields or raw_data
if (request.multipart) {
assert(request.method != HTTP_GET);
assert(has_request_body);
multipart_mime = curl_mime_init(curl);
for (auto &it : request.fields) {
curl_mimepart *part = curl_mime_addpart(multipart_mime);
@ -303,7 +311,7 @@ HTTPFetchOngoing::HTTPFetchOngoing(const HTTPFetchRequest &request_,
curl_mime_data(part, it.second.c_str(), it.second.size());
}
curl_easy_setopt(curl, CURLOPT_MIMEPOST, multipart_mime);
} else if (request.method != HTTP_GET) {
} else if (has_request_body) {
if (request.fields.empty()) {
// Note that we need to set this to an empty buffer (not NULL)
// even if no data is to be sent.