From fc58a0bec8bf779af3afecbc6ca59a7b9c9c0b67 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 7 Nov 2016 10:42:23 +0100 Subject: Added basic HTTP server, not active yet, based on ASIO example with small refactoring included (nw) --- src/lib/http/request_handler.hpp | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/lib/http/request_handler.hpp (limited to 'src/lib/http/request_handler.hpp') diff --git a/src/lib/http/request_handler.hpp b/src/lib/http/request_handler.hpp new file mode 100644 index 00000000000..0554aa114c5 --- /dev/null +++ b/src/lib/http/request_handler.hpp @@ -0,0 +1,42 @@ +// license:Boost +// copyright-holders:Christopher M. Kohlhoff + +#ifndef HTTP_REQUEST_HANDLER_HPP +#define HTTP_REQUEST_HANDLER_HPP + +#include + +namespace http { +namespace server { + +struct reply; +struct request; + +/// The common handler for all incoming requests. +class request_handler +{ +public: + request_handler(const request_handler&) = delete; + request_handler& operator=(const request_handler&) = delete; + + /// Construct with a directory containing files to be served. + explicit request_handler(const std::string& doc_root); + + /// Handle a request and produce a reply. + void handle_request(const request& req, reply& rep) const; + + bool serve_static_content(std::string& request_path, reply& rep) const; + +private: + /// The directory containing the files to be served. + std::string m_doc_root; + + /// Perform URL-decoding on a string. Returns false if the encoding was + /// invalid. + static bool url_decode(const std::string& in, std::string& out); +}; + +} // namespace server +} // namespace http + +#endif // HTTP_REQUEST_HANDLER_HPP -- cgit v1.2.3-70-g09d2