X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fhttpfetch.h;h=3b9f17f0a53cd68a6639fdfe03fa914e1b2a41c9;hb=2760371d8e43327e94d1b4ecb79fbcb56278db90;hp=d64b80b66b4c37abb961d2d3bc08c4d03bd7608e;hpb=f98bbe193e0093aca8d8957cec82fdbd28639915;p=minetest.git diff --git a/src/httpfetch.h b/src/httpfetch.h index d64b80b66..3b9f17f0a 100644 --- a/src/httpfetch.h +++ b/src/httpfetch.h @@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef HTTPFETCH_HEADER -#define HTTPFETCH_HEADER +#pragma once #include #include "util/string.h" @@ -29,17 +28,26 @@ with this program; if not, write to the Free Software Foundation, Inc., #define HTTPFETCH_DISCARD 0 #define HTTPFETCH_SYNC 1 +// Methods +enum HttpMethod : u8 +{ + HTTP_GET, + HTTP_POST, + HTTP_PUT, + HTTP_DELETE, +}; + struct HTTPFetchRequest { - std::string url; + std::string url = ""; // Identifies the caller (for asynchronous requests) // Ignored by httpfetch_sync - unsigned long caller; + unsigned long caller = HTTPFETCH_DISCARD; // Some number that identifies the request // (when the same caller issues multiple httpfetch_async calls) - unsigned long request_id; + unsigned long request_id = 0; // Timeout for the whole transfer, in milliseconds long timeout; @@ -49,19 +57,22 @@ struct HTTPFetchRequest // Indicates if this is multipart/form-data or // application/x-www-form-urlencoded. POST-only. - bool multipart; + bool multipart = false; + + // The Method to use default = GET + // Avaible methods GET, POST, PUT, DELETE + HttpMethod method = HTTP_GET; - // POST fields. Fields are escaped properly. - // If this is empty a GET request is done instead. - StringMap post_fields; + // Fields of the request + StringMap fields; - // Raw POST data, overrides post_fields. - std::string post_data; + // Raw data of the request overrides fields + std::string raw_data; // If not empty, should contain entries such as "Accept: text/html" std::vector extra_headers; - //useragent to use + // useragent to use std::string useragent; HTTPFetchRequest(); @@ -69,32 +80,20 @@ struct HTTPFetchRequest struct HTTPFetchResult { - bool succeeded; - bool timeout; - long response_code; - std::string data; + bool succeeded = false; + bool timeout = false; + long response_code = 0; + std::string data = ""; // The caller and request_id from the corresponding HTTPFetchRequest. - unsigned long caller; - unsigned long request_id; - - HTTPFetchResult() : - succeeded(false), - timeout(false), - response_code(0), - data(""), - caller(HTTPFETCH_DISCARD), - request_id(0) - {} + unsigned long caller = HTTPFETCH_DISCARD; + unsigned long request_id = 0; - HTTPFetchResult(const HTTPFetchRequest &fetch_request) : - succeeded(false), - timeout(false), - response_code(0), - data(""), - caller(fetch_request.caller), - request_id(fetch_request.request_id) - {} + HTTPFetchResult() = default; + HTTPFetchResult(const HTTPFetchRequest &fetch_request) : + caller(fetch_request.caller), request_id(fetch_request.request_id) + { + } }; // Initializes the httpfetch module @@ -124,8 +123,4 @@ void httpfetch_caller_free(unsigned long caller); // Performs a synchronous HTTP request. This blocks and therefore should // only be used from background threads. -void httpfetch_sync(const HTTPFetchRequest &fetch_request, - HTTPFetchResult &fetch_result); - - -#endif // !HTTPFETCH_HEADER +void httpfetch_sync(const HTTPFetchRequest &fetch_request, HTTPFetchResult &fetch_result);