-
Notifications
You must be signed in to change notification settings - Fork 13.3k
/
Copy pathRequestHandler.h
87 lines (71 loc) · 1.96 KB
/
RequestHandler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef REQUESTHANDLER_H
#define REQUESTHANDLER_H
#include <ESP8266WebServer.h>
#include <vector>
namespace esp8266webserver {
template<typename ServerType>
class RequestHandler {
using WebServerType = ESP8266WebServerTemplate<ServerType>;
public:
virtual ~RequestHandler() { }
/*
note: old handler API for backward compatibility
*/
virtual bool canHandle(HTTPMethod method, const String& uri) {
(void) method;
(void) uri;
return false;
}
virtual bool canUpload(const String& uri) {
(void) uri;
return false;
}
/*
note: new handler API with support for filters etc.
*/
virtual bool canHandle(WebServerType& server, HTTPMethod method, const String& uri) {
(void) server;
(void) method;
(void) uri;
return false;
}
virtual bool canUpload(WebServerType& server, const String& uri) {
(void) server;
(void) uri;
return false;
}
virtual bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) {
(void) server;
(void) requestMethod;
(void) requestUri;
return false;
}
virtual void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) {
(void) server;
(void) requestUri;
(void) upload;
}
RequestHandler<ServerType>* next() {
return _next;
}
void next(RequestHandler<ServerType>* r) {
_next = r;
}
virtual RequestHandler<ServerType>& setFilter(std::function<bool(ESP8266WebServerTemplate<ServerType>&)> filter) {
(void)filter;
return *this;
}
private:
RequestHandler<ServerType>* _next = nullptr;
protected:
std::vector<String> pathArgs;
public:
size_t pathArgsSize() const {
return pathArgs.size();
}
const String& pathArg(unsigned int i) const {
return pathArgs[i];
}
};
} // namespace
#endif //REQUESTHANDLER_H