1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#pragma once
#include "network_connection.hpp"
#include <stddef.h>
enum HTTPRequestMethod
{
GET,
POST,
PUT,
HEAD,
DELETE,
CONNECT,
OPTIONS,
TRACE,
PATCH
};
constexpr const char *http_request_method_strs[] = { "GET", "POST", "PUT",
"HEAD", "DELETE", "CONNECT",
"OPTIONS", "TRACE", "PATCH" };
auto str_to_http_request_method(const char *http_request_method_str) -> HTTPRequestMethod;
class HTTPRequest
{
public:
explicit HTTPRequest(
NetworkConnection connection,
HTTPRequestMethod method,
char *http_version,
char *path,
int data_length,
char *data
) noexcept;
HTTPRequest(const HTTPRequest &other) noexcept = delete;
HTTPRequest(HTTPRequest &&other) noexcept;
~HTTPRequest() noexcept;
auto connection() noexcept -> NetworkConnection &;
auto method() const noexcept -> HTTPRequestMethod;
auto http_version() const noexcept -> const char *;
auto path() const noexcept -> const char *;
auto data_length() const noexcept -> int;
auto data() const noexcept -> const char *;
auto operator=(const HTTPRequest &other) noexcept -> HTTPRequest & = delete;
auto operator=(HTTPRequest &&other) noexcept -> HTTPRequest &;
static auto create_invalid() noexcept -> HTTPRequest;
private:
NetworkConnection _connection;
const HTTPRequestMethod _method;
char *_http_version;
char *_path;
const int _data_length;
char *_data;
HTTPRequest() noexcept;
};
|