X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fhttpfetch.h;h=50a4c93d81cf3079be8f69d95f16c10264ba59ec;hb=b97c9c65777b0389f4cc9a6e3257506f29761e03;hp=6eb01fe79a04af083f73f4aace93121d14148866;hpb=b03135548bbd9bcb73d14b067b96ec913404dd5f;p=oweals%2Fminetest.git diff --git a/src/httpfetch.h b/src/httpfetch.h index 6eb01fe79..50a4c93d8 100644 --- a/src/httpfetch.h +++ b/src/httpfetch.h @@ -22,11 +22,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include +#include #include "config.h" // Can be used in place of "caller" in asynchronous transfers to discard result // (used as default value of "caller") #define HTTPFETCH_DISCARD 0 +#define HTTPFETCH_SYNC 1 struct HTTPFetchRequest { @@ -46,10 +48,16 @@ struct HTTPFetchRequest // Timeout for the connection phase, in milliseconds long connect_timeout; - // POST data (should be application/x-www-form-urlencoded - // unless a Content-Type header is specified in extra_headers) + // Indicates if this is multipart/form-data or + // application/x-www-form-urlencoded. POST-only. + bool multipart; + + // POST fields. Fields are escaped properly. // If this is empty a GET request is done instead. - std::string post_fields; + std::map post_fields; + + // Raw POST data, overrides post_fields. + std::string post_data; // If not empty, should contain entries such as "Accept: text/html" std::vector extra_headers; @@ -57,14 +65,7 @@ struct HTTPFetchRequest //useragent to use std::string useragent; - HTTPFetchRequest() - { - url = ""; - caller = HTTPFETCH_DISCARD; - request_id = 0; - timeout = 0; - connect_timeout = 0; - } + HTTPFetchRequest(); }; struct HTTPFetchResult @@ -87,15 +88,16 @@ struct HTTPFetchResult request_id = 0; } - HTTPFetchResult(const HTTPFetchRequest &fetchrequest) + HTTPFetchResult(const HTTPFetchRequest &fetch_request) { succeeded = false; timeout = false; response_code = 0; data = ""; - caller = fetchrequest.caller; - request_id = fetchrequest.request_id; + caller = fetch_request.caller; + request_id = fetch_request.request_id; } + }; // Initializes the httpfetch module @@ -105,11 +107,11 @@ void httpfetch_init(int parallel_limit); void httpfetch_cleanup(); // Starts an asynchronous HTTP fetch request -void httpfetch_async(const HTTPFetchRequest &fetchrequest); +void httpfetch_async(const HTTPFetchRequest &fetch_request); // If any fetch for the given caller ID is complete, removes it from the -// result queue, sets fetchresult and returns true. Otherwise returns false. -bool httpfetch_async_get(unsigned long caller, HTTPFetchResult &fetchresult); +// result queue, sets the fetch result and returns true. Otherwise returns false. +bool httpfetch_async_get(unsigned long caller, HTTPFetchResult &fetch_result); // Allocates a caller ID for httpfetch_async // Not required if you want to set caller = HTTPFETCH_DISCARD @@ -122,8 +124,8 @@ 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 &fetchrequest, - HTTPFetchResult &fetchresult); +void httpfetch_sync(const HTTPFetchRequest &fetch_request, + HTTPFetchResult &fetch_result); #endif // !HTTPFETCH_HEADER