ESP32 HTTPS Server
HTTPRequest.hpp
1 #ifndef SRC_HTTPREQUEST_HPP_
2 #define SRC_HTTPREQUEST_HPP_
3 
4 #include <Arduino.h>
5 #include <IPAddress.h>
6 #include <string>
7 
8 #include <mbedtls/base64.h>
9 
10 #include "ConnectionContext.hpp"
11 #include "HTTPNode.hpp"
12 #include "HTTPHeader.hpp"
13 #include "HTTPHeaders.hpp"
14 #include "ResourceParameters.hpp"
15 #include "util.hpp"
16 
17 namespace httpsserver {
18 
22 class HTTPRequest {
23 public:
24  HTTPRequest(ConnectionContext * con, HTTPHeaders * headers, HTTPNode * resolvedNode, std::string method, ResourceParameters * params, std::string requestString);
25  virtual ~HTTPRequest();
26 
27  std::string getHeader(std::string const &name);
28  void setHeader(std::string const &name, std::string const &value);
29  HTTPNode * getResolvedNode();
30  std::string getRequestString();
31  std::string getMethod();
32  std::string getTag();
33  IPAddress getClientIP();
34 
35  size_t readChars(char * buffer, size_t length);
36  size_t readBytes(byte * buffer, size_t length);
37  size_t getContentLength();
38  bool requestComplete();
39  void discardRequestBody();
40  ResourceParameters * getParams();
41  HTTPHeaders *getHTTPHeaders();
42  std::string getBasicAuthUser();
43  std::string getBasicAuthPassword();
44  bool isSecure();
45  void setWebsocketHandler(WebsocketHandler *wsHandler);
46 
47 private:
48  std::string decodeBasicAuthToken();
49 
50  ConnectionContext * _con;
51 
52  HTTPHeaders * _headers;
53 
54  HTTPNode * _resolvedNode;
55 
56  std::string _method;
57 
58  ResourceParameters * _params;
59 
60  std::string _requestString;
61 
62  bool _contentLengthSet;
63  size_t _remainingContent;
64 };
65 
66 } /* namespace httpsserver */
67 
68 #endif /* SRC_HTTPREQUEST_HPP_ */
Represents the request stream for an HTTP request.
Definition: HTTPRequest.hpp:22
Base class for a URL/route-handler in the server.
Definition: HTTPNode.hpp:26
void discardRequestBody()
Definition: HTTPRequest.cpp:116
Groups and manages a set of HTTPHeader instances.
Definition: HTTPHeaders.hpp:18
The ResourceParameters provide access to the parameters passed in the URI.
Definition: ResourceParameters.hpp:31
Definition: WebsocketHandler.hpp:34
Internal class to handle the state of a connection.
Definition: ConnectionContext.hpp:18
Definition: ConnectionContext.cpp:3