Added webApi integration, needs a lot of improvement aka not stable

This commit is contained in:
anschrammh 2019-04-03 07:58:42 +02:00
parent 8110ae00fc
commit 78d183d03c
2 changed files with 10 additions and 7 deletions

View File

@ -8,7 +8,7 @@ WEBServerManager::WEBServerManager(unsigned int port, SDCardManager *sdCardManag
_wifiServer.begin();
}
boolean WEBServerManager::addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient& , void*), void *pData, HttpRequestMethod HRM)
boolean WEBServerManager::addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient* , void*), void *pData, HttpRequestMethod HRM)
{
return _apiDictionary.add(uri,new ApiRoutine({apiRoutine,pData, HRM}));
}
@ -56,7 +56,9 @@ boolean WEBServerManager::runServer()
#endif
//We first check if it s an api call
if(!sendPageToClientFromApiDictio(&_wifiClient))
{
sendPageToClientFromSdCard(&_wifiClient);
}
_clientState = RESPONSE_SENT;
break;
case RESPONSE_SENT:
@ -323,18 +325,19 @@ boolean WEBServerManager::sendPageToClientFromApiDictio(WiFiClient *wifiClient)
{
if(_apiDictionary.count() == 0)
return false;
Serial.println("___1");
ApiRoutine *ref = _apiDictionary(_httpRequestData.httpResource).getValueRef();
Serial.println("___2");
if(ref == NULL)
return false;
if(ref->HRM == UNDEFINED)
{
return (*ref->apiRoutine)(_httpRequestData, *wifiClient, ref->pData);
Serial.println("___3");
return (*ref->apiRoutine)(_httpRequestData, wifiClient, ref->pData);
}else if(ref->HRM == _httpRequestData.HRM)
{
return (*ref->apiRoutine)(_httpRequestData, *wifiClient, ref->pData);
return (*ref->apiRoutine)(_httpRequestData, wifiClient, ref->pData);
}
else
return false;

View File

@ -29,14 +29,14 @@ class WEBServerManager
boolean runServer();
unsigned int getPort() const;
boolean addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient&, void*), void *pData, HttpRequestMethod HRM = UNDEFINED);
boolean addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient*, void*), void *pData, HttpRequestMethod HRM = UNDEFINED);
void clearApiRoutine();
boolean removeApiRoutine(const char *uri);
protected:
private:
struct ApiRoutine
{
boolean (*apiRoutine)(HttpRequestData&, WiFiClient&, void*);
boolean (*apiRoutine)(HttpRequestData&, WiFiClient*, void*);
void *pData;
HttpRequestMethod HRM;
};