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(); _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})); return _apiDictionary.add(uri,new ApiRoutine({apiRoutine,pData, HRM}));
} }
@ -56,7 +56,9 @@ boolean WEBServerManager::runServer()
#endif #endif
//We first check if it s an api call //We first check if it s an api call
if(!sendPageToClientFromApiDictio(&_wifiClient)) if(!sendPageToClientFromApiDictio(&_wifiClient))
{
sendPageToClientFromSdCard(&_wifiClient); sendPageToClientFromSdCard(&_wifiClient);
}
_clientState = RESPONSE_SENT; _clientState = RESPONSE_SENT;
break; break;
case RESPONSE_SENT: case RESPONSE_SENT:
@ -323,18 +325,19 @@ boolean WEBServerManager::sendPageToClientFromApiDictio(WiFiClient *wifiClient)
{ {
if(_apiDictionary.count() == 0) if(_apiDictionary.count() == 0)
return false; return false;
Serial.println("___1");
ApiRoutine *ref = _apiDictionary(_httpRequestData.httpResource).getValueRef(); ApiRoutine *ref = _apiDictionary(_httpRequestData.httpResource).getValueRef();
Serial.println("___2");
if(ref == NULL) if(ref == NULL)
return false; return false;
if(ref->HRM == UNDEFINED) 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) }else if(ref->HRM == _httpRequestData.HRM)
{ {
return (*ref->apiRoutine)(_httpRequestData, *wifiClient, ref->pData); return (*ref->apiRoutine)(_httpRequestData, wifiClient, ref->pData);
} }
else else
return false; return false;

View File

@ -29,14 +29,14 @@ class WEBServerManager
boolean runServer(); boolean runServer();
unsigned int getPort() const; 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(); void clearApiRoutine();
boolean removeApiRoutine(const char *uri); boolean removeApiRoutine(const char *uri);
protected: protected:
private: private:
struct ApiRoutine struct ApiRoutine
{ {
boolean (*apiRoutine)(HttpRequestData&, WiFiClient&, void*); boolean (*apiRoutine)(HttpRequestData&, WiFiClient*, void*);
void *pData; void *pData;
HttpRequestMethod HRM; HttpRequestMethod HRM;
}; };