summaryrefslogtreecommitdiff
path: root/http/http_request.h
diff options
context:
space:
mode:
authorEd Tanous <ed.tanous@intel.com>2019-10-11 01:39:33 +0300
committerEd Tanous <ed.tanous@intel.com>2019-10-18 19:20:11 +0300
commitc94ad49bc747e7a7170287b9f4c859e3638cf432 (patch)
tree17ca83806e5b546f20c3478862fe1aa699e2ae22 /http/http_request.h
parent789771dda22c256afa9e46ffe4c859bb87532af1 (diff)
downloadbmcweb-c94ad49bc747e7a7170287b9f4c859e3638cf432.tar.xz
Make references to crow less obvious
Recently, a number of people in the community have made the (admittedly easy) mistake that we use a significant portion of crow. Today, we use crow for the router, and the "app" structure, and even those have been significantly modified to meet the bmc needs. All other components have been replaced with Boost beast. This commit removes the crow mentions from the Readme, and moves the crow folder to "http" to camouflage it a little. No code content has changed. Tested: Code compiles. No functional change made to any executable code. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: Iceb57b26306cc8bdcfc77f3874246338864fd118
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