#include "request.hpp" #include "util.hpp" #include auto str_to_http_request_method(const char *http_request_method_str) -> HTTPRequestMethod { if (util::streq(http_request_method_str, "GET")) { return HTTPRequestMethod::GET; } if (util::streq(http_request_method_str, "POST")) { return HTTPRequestMethod::POST; } if (util::streq(http_request_method_str, "PUT")) { return HTTPRequestMethod::PUT; } if (util::streq(http_request_method_str, "HEAD")) { return HTTPRequestMethod::HEAD; } if (util::streq(http_request_method_str, "DELETE")) { return HTTPRequestMethod::DELETE; } if (util::streq(http_request_method_str, "CONNECT")) { return HTTPRequestMethod::CONNECT; } if (util::streq(http_request_method_str, "OPTIONS")) { return HTTPRequestMethod::OPTIONS; } if (util::streq(http_request_method_str, "TRACE")) { return HTTPRequestMethod::TRACE; } if (util::streq(http_request_method_str, "PATCH")) { return HTTPRequestMethod::PATCH; } return HTTPRequestMethod::GET; } HTTPRequest::HTTPRequest( int connection_id, HTTPRequestMethod method, char *http_version, // NOLINT(bugprone-easily-swappable-parameters) char *path, int data_length, char *data ) noexcept : _connection_id(connection_id), _method(method), _http_version(http_version), _path(path), _data_length(data_length), _data(data) { } HTTPRequest::HTTPRequest(HTTPRequest &&other) noexcept : _connection_id(other._connection_id), _method(other._method), _http_version(other._http_version), _path(other._path), _data_length(other._data_length), _data(other._data) { other._data = nullptr; } HTTPRequest::~HTTPRequest() noexcept { free(_data); } auto HTTPRequest::connection_id() const noexcept -> int { return _connection_id; } auto HTTPRequest::method() const noexcept -> HTTPRequestMethod { return _method; } auto HTTPRequest::http_version() const noexcept -> const char * { return _http_version; } auto HTTPRequest::path() const noexcept -> const char * { return _path; } auto HTTPRequest::data_length() const noexcept -> int { return _data_length; } auto HTTPRequest::data() const noexcept -> const char * { return _data; } auto HTTPRequest::operator=(HTTPRequest &&other) noexcept -> HTTPRequest & { if (this != &other) { free(_data); _data = other._data; other._data = nullptr; } return *this; } HTTPRequest HTTPRequest::create_invalid() noexcept { return HTTPRequest(); } HTTPRequest::HTTPRequest() noexcept : _connection_id(-1), _method(HTTPRequestMethod(-1)), _http_version(""), _path(""), _data_length(0), _data(nullptr) { }