Polyphase Game Engine
Loading...
Searching...
No Matches
HttpRequest.h
Go to the documentation of this file.
1#pragma once
2
3#include <map>
4#include <stdint.h>
5#include <string>
6#include <vector>
7
8#include "PolyphaseAPI.h"
10
11// Case-insensitive comparator for header keys (HTTP/1.1 header names are case-insensitive).
13{
14 bool operator()(const std::string& a, const std::string& b) const;
15};
16
17using HttpHeaderMap = std::map<std::string, std::string, HttpHeaderLess>;
18
20{
21public:
22 HttpRequest() = default;
23 HttpRequest(HttpVerb verb, std::string url) : mVerb(verb), mUrl(std::move(url)) {}
24
25 // Builder-style mutators. Each returns *this for chaining.
26 HttpRequest& Verb(HttpVerb v) { mVerb = v; return *this; }
27 HttpRequest& Url(std::string u) { mUrl = std::move(u); return *this; }
28 HttpRequest& Header(std::string k, std::string v) { mHeaders[std::move(k)] = std::move(v); return *this; }
29 HttpRequest& Body(const std::string& s) { mBody.assign(s.begin(), s.end()); return *this; }
30 HttpRequest& Body(std::vector<uint8_t> b) { mBody = std::move(b); return *this; }
31 HttpRequest& Body(const uint8_t* data, size_t size) { mBody.assign(data, data + size); return *this; }
32 HttpRequest& TimeoutMs(int32_t ms) { mTimeoutMs = ms; return *this; }
33 HttpRequest& MaxRedirects(int32_t n) { mMaxRedirects = n; return *this; }
34 HttpRequest& MaxBodyBytes(int64_t n) { mMaxBodyBytes = n; return *this; }
35 HttpRequest& VerifySsl(bool v) { mVerifySsl = v; return *this; }
36
37 HttpVerb GetVerb() const { return mVerb; }
38 const std::string& GetUrl() const { return mUrl; }
39 const HttpHeaderMap& GetHeaders() const { return mHeaders; }
40 const std::vector<uint8_t>& GetBody() const { return mBody; }
41 int32_t GetTimeoutMs() const { return mTimeoutMs; }
42 int32_t GetMaxRedirects() const { return mMaxRedirects; }
43 int64_t GetMaxBodyBytes() const { return mMaxBodyBytes; }
44 bool GetVerifySsl() const { return mVerifySsl; }
45
46private:
47 HttpVerb mVerb = HttpVerb::Get;
48 std::string mUrl;
49 HttpHeaderMap mHeaders;
50 std::vector<uint8_t> mBody;
51 int32_t mTimeoutMs = 10000;
52 int32_t mMaxRedirects = 5;
53 int64_t mMaxBodyBytes = 64ll * 1024 * 1024; // 64 MiB
54 bool mVerifySsl = true;
55};
std::map< std::string, std::string, HttpHeaderLess > HttpHeaderMap
Definition HttpRequest.h:17
HttpVerb
Definition HttpTypes.h:8
Export macros for Polyphase Engine symbols.
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition HttpRequest.h:20
int32_t GetMaxRedirects() const
Definition HttpRequest.h:42
int64_t GetMaxBodyBytes() const
Definition HttpRequest.h:43
HttpRequest()=default
HttpRequest & Header(std::string k, std::string v)
Definition HttpRequest.h:28
HttpRequest & Url(std::string u)
Definition HttpRequest.h:27
HttpRequest & Body(const std::string &s)
Definition HttpRequest.h:29
HttpRequest & Body(std::vector< uint8_t > b)
Definition HttpRequest.h:30
HttpRequest & Verb(HttpVerb v)
Definition HttpRequest.h:26
HttpRequest & MaxRedirects(int32_t n)
Definition HttpRequest.h:33
HttpRequest & MaxBodyBytes(int64_t n)
Definition HttpRequest.h:34
HttpRequest(HttpVerb verb, std::string url)
Definition HttpRequest.h:23
HttpRequest & TimeoutMs(int32_t ms)
Definition HttpRequest.h:32
HttpRequest & VerifySsl(bool v)
Definition HttpRequest.h:35
const std::string & GetUrl() const
Definition HttpRequest.h:38
HttpVerb GetVerb() const
Definition HttpRequest.h:37
bool GetVerifySsl() const
Definition HttpRequest.h:44
const HttpHeaderMap & GetHeaders() const
Definition HttpRequest.h:39
int32_t GetTimeoutMs() const
Definition HttpRequest.h:41
const std::vector< uint8_t > & GetBody() const
Definition HttpRequest.h:40
HttpRequest & Body(const uint8_t *data, size_t size)
Definition HttpRequest.h:31
Definition SmartPointer.h:631
Definition HttpRequest.h:13