#pragma once #include "common.h" #include "query_string.h" #include "sessions.hpp" #include #include #include #include namespace crow { struct Request { #ifdef BMCWEB_ENABLE_SSL using Adaptor = boost::beast::ssl_stream; #else using Adaptor = boost::asio::ip::tcp::socket; #endif boost::beast::http::request& req; boost::beast::http::fields& fields; std::string_view url{}; QueryString urlParams{}; bool isSecure{false}; const std::string& body; void* middlewareContext{}; boost::asio::io_context* ioService{}; std::shared_ptr session; std::string userRole{}; std::function socket; Request( boost::beast::http::request& reqIn) : req(reqIn), fields(reqIn.base()), 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