X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fhttpfetch.h;h=ae8b5afb5b733332b8b55dae03ccbf7b5d7d617d;hb=c8583f9a5ed95d0fe4e7f86803fc888976345146;hp=50a4c93d81cf3079be8f69d95f16c10264ba59ec;hpb=86a3c8ce566f28112dc032aa48c40e12fde97be2;p=dragonfireclient.git diff --git a/src/httpfetch.h b/src/httpfetch.h index 50a4c93d8..ae8b5afb5 100644 --- a/src/httpfetch.h +++ b/src/httpfetch.h @@ -17,12 +17,10 @@ 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 -#include +#include "util/string.h" #include "config.h" // Can be used in place of "caller" in asynchronous transfers to discard result @@ -32,15 +30,15 @@ with this program; if not, write to the Free Software Foundation, Inc., 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; @@ -50,11 +48,11 @@ struct HTTPFetchRequest // Indicates if this is multipart/form-data or // application/x-www-form-urlencoded. POST-only. - bool multipart; + bool multipart = false; // POST fields. Fields are escaped properly. // If this is empty a GET request is done instead. - std::map post_fields; + StringMap post_fields; // Raw POST data, overrides post_fields. std::string post_data; @@ -62,7 +60,7 @@ struct HTTPFetchRequest // 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(); @@ -70,34 +68,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; + unsigned long caller = HTTPFETCH_DISCARD; + unsigned long request_id = 0; - HTTPFetchResult() - { - succeeded = false; - timeout = false; - response_code = 0; - data = ""; - caller = HTTPFETCH_DISCARD; - request_id = 0; - } + HTTPFetchResult() = default; - HTTPFetchResult(const HTTPFetchRequest &fetch_request) + HTTPFetchResult(const HTTPFetchRequest &fetch_request) : + caller(fetch_request.caller), request_id(fetch_request.request_id) { - succeeded = false; - timeout = false; - response_code = 0; - data = ""; - caller = fetch_request.caller; - request_id = fetch_request.request_id; } - }; // Initializes the httpfetch module @@ -117,6 +101,9 @@ bool httpfetch_async_get(unsigned long caller, HTTPFetchResult &fetch_result); // Not required if you want to set caller = HTTPFETCH_DISCARD unsigned long httpfetch_caller_alloc(); +// Allocates a non-predictable caller ID for httpfetch_async +unsigned long httpfetch_caller_alloc_secure(); + // Frees a caller ID allocated with httpfetch_caller_alloc // Note: This can be expensive, because the httpfetch thread is told // to stop any ongoing fetches for the given caller. @@ -124,8 +111,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);