summaryrefslogtreecommitdiff
path: root/http/http_request.h
diff options
context:
space:
mode:
Diffstat (limited to 'http/http_request.h')
-rw-r--r--http/http_request.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/http/http_request.h b/http/http_request.h
new file mode 100644
index 0000000000..caae93a1a5
--- /dev/null
+++ b/http/http_request.h
@@ -0,0 +1,77 @@
+#pragma once
+
+#include "sessions.hpp"
+
+#include <boost/asio/io_context.hpp>
+#include <boost/beast/http.hpp>
+#include <boost/beast/websocket.hpp>
+
+#include "common.h"
+#include "query_string.h"
+
+namespace crow
+{
+
+struct Request
+{
+ boost::beast::http::request<boost::beast::http::string_body>& req;
+ std::string_view url{};
+ QueryString urlParams{};
+ bool isSecure{false};
+
+ const std::string& body;
+
+ void* middlewareContext{};
+ boost::asio::io_context* ioService{};
+
+ std::shared_ptr<crow::persistent_data::UserSession> session;
+
+ Request(
+ boost::beast::http::request<boost::beast::http::string_body>& reqIn) :
+ req(reqIn),
+ body(reqIn.body())
+ {
+ }
+
+ boost::beast::http::verb method() const
+ {
+ return req.method();
+ }
+
+ const std::string_view getHeaderValue(std::string_view key) const
+ {
+ return req[key];
+ }
+
+ const std::string_view getHeaderValue(boost::beast::http::field key) const
+ {
+ return req[key];
+ }
+
+ const std::string_view methodString() const
+ {
+ return req.method_string();
+ }
+
+ const std::string_view target() const
+ {
+ return req.target();
+ }
+
+ unsigned version()
+ {
+ return req.version();
+ }
+
+ bool isUpgrade()
+ {
+ return boost::beast::websocket::is_upgrade(req);
+ }
+
+ bool keepAlive()
+ {
+ return req.keep_alive();
+ }
+};
+
+} // namespace crow