#ifndef SRC_HTTPREQUEST_HPP_ #define SRC_HTTPREQUEST_HPP_ #include #include #include #include "ConnectionContext.hpp" #include "HTTPNode.hpp" #include "HTTPHeader.hpp" #include "HTTPHeaders.hpp" #include "ResourceParameters.hpp" #include "util.hpp" namespace httpsserver { /** * \brief Represents the request stream for an HTTP request */ class HTTPRequest { public: HTTPRequest(ConnectionContext * con, HTTPHeaders * headers, HTTPNode * resolvedNode, std::string method, ResourceParameters * params, std::string requestString); virtual ~HTTPRequest(); std::string getHeader(std::string const &name); void setHeader(std::string const &name, std::string const &value); HTTPNode * getResolvedNode(); std::string getRequestString(); std::string getMethod(); std::string getTag(); size_t readChars(char * buffer, size_t length); size_t readBytes(byte * buffer, size_t length); size_t getContentLength(); bool requestComplete(); void discardRequestBody(); ResourceParameters * getParams(); std::string getBasicAuthUser(); std::string getBasicAuthPassword(); bool isSecure(); void setWebsocketHandler(WebsocketHandler *wsHandler); private: std::string decodeBasicAuthToken(); ConnectionContext * _con; HTTPHeaders * _headers; HTTPNode * _resolvedNode; std::string _method; ResourceParameters * _params; std::string _requestString; bool _contentLengthSet; size_t _remainingContent; }; } /* namespace httpsserver */ #endif /* SRC_HTTPREQUEST_HPP_ */