@@ -81,6 +81,7 @@ void ESPWebServer::on(const String &uri, HTTPMethod method, THandlerFunction fn)
81
81
82
82
void ESPWebServer::on (const String &uri, HTTPMethod method, THandlerFunction fn, THandlerFunction ufn) {
83
83
// TODO: Handle HTTP_ANY
84
+ // TODO: convert {} in uri to * (so pathArg() will work)
84
85
const char *methodname = " ???" ;
85
86
for (size_t n = 0 ; n < sizeof (METHODNAMES); n++) {
86
87
if (METHODNAMES[n].val == method) {
@@ -93,6 +94,7 @@ void ESPWebServer::on(const String &uri, HTTPMethod method, THandlerFunction fn,
93
94
}
94
95
95
96
void ESPWebServer::serveStatic (const char * uri, fs::FS& fs, const char * path, const char * cache_header) {
97
+ // TODO: add * or something to path so serveStatic("/dir/",...) will serve all content from that directory
96
98
ESPWebServerStaticNode *node = new ESPWebServerStaticNode (this , std::string (path), fs, path, cache_header);
97
99
_server.registerNode (node);
98
100
}
@@ -127,9 +129,9 @@ HTTPUpload& ESPWebServer::upload() {
127
129
}
128
130
129
131
String ESPWebServer::pathArg (unsigned int i) {
130
- // TODO
131
- HTTPS_LOGE ( " pathArg() not yet implemented " );
132
- return " " ;
132
+ ResourceParameters *params = _activeRequest-> getParams ();
133
+ auto rv = params-> getPathParameter (i );
134
+ return String (rv. c_str ()) ;
133
135
}
134
136
135
137
String ESPWebServer::arg (String name) {
@@ -173,44 +175,52 @@ bool ESPWebServer::hasArg(String name) {
173
175
}
174
176
175
177
void ESPWebServer::collectHeaders (const char * headerKeys[], const size_t headerKeysCount) {
176
- // TODO
177
- HTTPS_LOGE (" collectHeaders() not yet implemented" );
178
+ HTTPS_LOGW (" collectHeaders() not implemented, but probably not needed" );
178
179
}
179
180
180
181
String ESPWebServer::header (String name) {
181
- // TODO
182
- HTTPS_LOGE (" header(String) not yet implemented" );
182
+ HTTPHeaders* headers = _activeRequest->getHTTPHeaders ();
183
+ HTTPHeader* header = headers->get (std::string (name.c_str ()));
184
+ if (header) {
185
+ return String (header->_value .c_str ());
186
+ }
183
187
return " " ;
184
188
}
185
189
186
190
String ESPWebServer::header (int i) {
187
- // TODO
188
- HTTPS_LOGE (" header(int) not yet implemented" );
191
+ HTTPHeaders* headers = _activeRequest->getHTTPHeaders ();
192
+ auto allHeaders = headers->getAll ();
193
+ if (i >= 0 && i < allHeaders->size ()) {
194
+ HTTPHeader* header = allHeaders->at (i);
195
+ return String (header->_value .c_str ());
196
+ }
189
197
return " " ;
190
198
}
191
199
192
200
String ESPWebServer::headerName (int i) {
193
- // TODO
194
- HTTPS_LOGE (" headerName() not yet implemented" );
201
+ HTTPHeaders* headers = _activeRequest->getHTTPHeaders ();
202
+ auto allHeaders = headers->getAll ();
203
+ if (i >= 0 && i < allHeaders->size ()) {
204
+ HTTPHeader* header = allHeaders->at (i);
205
+ return String (header->_name .c_str ());
206
+ }
195
207
return " " ;
196
208
}
197
209
198
210
int ESPWebServer::headers () {
199
- // TODO
200
- HTTPS_LOGE ( " headers() not yet implemented " );
201
- return 0 ;
211
+ HTTPHeaders* headers = _activeRequest-> getHTTPHeaders ();
212
+ auto allHeaders = headers-> getAll ( );
213
+ return allHeaders-> size () ;
202
214
}
203
215
204
216
bool ESPWebServer::hasHeader (String name) {
205
- // TODO
206
- HTTPS_LOGE ( " hasHeader() not yet implemented " );
207
- return false ;
217
+ HTTPHeaders* headers = _activeRequest-> getHTTPHeaders ();
218
+ HTTPHeader* header = headers-> get ( std::string (name. c_str ()) );
219
+ return header != NULL ;
208
220
}
209
221
210
222
String ESPWebServer::hostHeader () {
211
- // TODO
212
- HTTPS_LOGE (" hostHeader() not yet implemented" );
213
- return " " ;
223
+ return header (" Host" );
214
224
}
215
225
216
226
void ESPWebServer::send (int code, const char * content_type, const String& content) {
@@ -285,9 +295,8 @@ void ESPWebServer::sendContent_P(PGM_P content, size_t size) {
285
295
}
286
296
287
297
String ESPWebServer::urlDecode (const String& text) {
288
- // TODO
289
- HTTPS_LOGE (" urlDecode() not yet implemented" );
290
- return text;
298
+ auto decoded = ::urlDecode (std::string (text.c_str ()));
299
+ return String (decoded.c_str ());
291
300
}
292
301
293
302
void ESPWebServer::_handlerWrapper (
0 commit comments