1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-13 13:01:55 +03:00

Add header access using same method as arguments 2

based on @brianensor PR
+sample and some sanity check
This commit is contained in:
luc
2015-10-28 13:58:53 +08:00
parent fbae22f86b
commit ee0b8621f3
4 changed files with 197 additions and 0 deletions

View File

@ -37,10 +37,15 @@ ESP8266WebServer::ESP8266WebServer(int port)
, _lastHandler(0)
, _currentArgCount(0)
, _currentArgs(0)
,_headerKeysCount(0)
,_currentHeaders(0)
{
}
ESP8266WebServer::~ESP8266WebServer() {
if (_currentHeaders)
delete[]_currentHeaders;
_headerKeysCount = 0;
if (!_firstHandler)
return;
RequestHandler* handler = _firstHandler;
@ -283,6 +288,48 @@ bool ESP8266WebServer::hasArg(const char* name) {
return false;
}
String ESP8266WebServer::header(const char* name) {
for (int i = 0; i < _headerKeysCount; ++i) {
if (_currentHeaders[i].key == name)
return _currentHeaders[i].value;
}
return String();
}
void ESP8266WebServer::collectHeaders(const char* headerKeys[], const size_t headerKeysCount) {
_headerKeysCount = headerKeysCount;
if (_currentHeaders)
delete[]_currentHeaders;
_currentHeaders = new RequestArgument[_headerKeysCount];
for (int i = 0; i < _headerKeysCount; i++){
_currentHeaders[i].key = headerKeys[i];
}
}
String ESP8266WebServer::header(int i) {
if (i < _headerKeysCount)
return _currentHeaders[i].value;
return String();
}
String ESP8266WebServer::headerName(int i) {
if (i < _headerKeysCount)
return _currentHeaders[i].key;
return String();
}
int ESP8266WebServer::headers() {
return _headerKeysCount;
}
bool ESP8266WebServer::hasHeader(const char* name) {
for (int i = 0; i < _headerKeysCount; ++i) {
if ((_currentHeaders[i].key == name) && (_currentHeaders[i].value.length() > 0))
return true;
}
return false;
}
String ESP8266WebServer::hostHeader() {
return _hostHeader;
}