#pragma once #include 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( size_t connection_id, HTTPRequestMethod method, char *http_version, char *path, int data_length, char *data ) noexcept; HTTPRequest(const HTTPRequest &other) noexcept = delete; HTTPRequest(HTTPRequest &&other) noexcept = delete; ~HTTPRequest() noexcept; auto connection_id() const noexcept -> size_t; 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 & = delete; private: const size_t _connection_id; const HTTPRequestMethod _method; char *_http_version; char *_path; const int _data_length; char *_data; };