Enhanced the web api

This commit is contained in:
anschrammh 2019-04-09 07:59:05 +02:00
parent 5030d85b98
commit c1ec325a8b
2 changed files with 106 additions and 14 deletions

View File

@ -1,9 +1,32 @@
#include "SAB.h"
#include "webApi.h"
boolean helloServerApi(WEBServerManager::HttpRequestData &HRD, WiFiClient* wc, void* pData)
boolean apiTesterApi(WEBServerManager::HttpRequestData &HRD, WiFiClient* wc, void* pData)
{
wc->print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n<p>Hello client !!!</p>\r\n</html>"));
wc->print(F("HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"API\" : \"available\" }"));
return true;
}
boolean ViewByUIDApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
SAB *p = (SAB *)pData;
char buffer[200];
DictionaryHelper::StringEntity *pSE = HRD.getParams("UID");
if(pSE == NULL)
{
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"failed\", \"message\" : \"expected UID parameter\" }");
}
else if(strlen(pSE->getString()) > 0)
{
if(p->getScreenManager().displayView(atoi(pSE->getString())))
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"ViewUID\" : \"%d\" }", p->getScreenManager().getCurrentViewUID());
else
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"failed\", \"message\" : \"%s\" }", p->getScreenManager().getErrorMessage());
}
else
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"failed\", \"message\" : \"UID parameter empty\" }");
wc->print(buffer);
return true;
}
@ -11,13 +34,15 @@ boolean nextViewApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void
{
SAB *p = (SAB *)pData;
char buffer[200];
p->getScreenManager().displayNextView();
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"ViewUID\" : \"%d\" }", p->getScreenManager().getCurrentViewUID());
if(p->getScreenManager().displayNextView())
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"ViewUID\" : \"%d\" }", p->getScreenManager().getCurrentViewUID());
else
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"failed\", \"message\" : \"%s\" }", p->getScreenManager().getErrorMessage());
wc->print(buffer);
return true;
}
boolean rtcTimeApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
boolean rtcGetTimeApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
SAB *p = (SAB *)pData;
char buffer[200];
@ -27,26 +52,89 @@ boolean rtcTimeApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void
return true;
}
boolean sdCardEjectApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
boolean rtcSetTimeApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
SAB *p = (SAB *)pData;
char buffer[200];
p->getSdCardManager().end();
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"card\" : \"ejected\" }");
DictionaryHelper::StringEntity *pSE = HRD.getParams("datetime");
if(pSE == NULL)
{
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"failed\", \"message\" : \"expected datetime parameter\" }");
}
else if(strlen(pSE->getString()) > 0)
{
Dictionary<DictionaryHelper::StringEntity> *dictio = pSE->split('_');
if(dictio == NULL)
{
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"failed\", \"message\" : \"datetime format error\" }");
wc->print(buffer);
return true;
}
else
{
if(dictio->count() != 6)
{
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"error\", \"message\" : \"datetime format error\" }");
}
else
{
p->getRtcManager().setDateTime(DateTime(
atoi(dictio->get(2)->getString()),
atoi(dictio->get(1)->getString()),
atoi(dictio->get((unsigned int)0)->getString()),
atoi(dictio->get(3)->getString()),
atoi(dictio->get(4)->getString()),
atoi(dictio->get(5)->getString())
));
DateTime d = p->getRtcManager().getDateTime();
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"date\" : \"%d/%d/%d\", \"time\" : \"%d:%d:%d\" }", d.day(), d.month(), d.year(), d.hour(), d.minute(), d.second());
}
wc->print(buffer);
delete dictio;
return true;
}
}
wc->print(buffer);
return true;
}
boolean sdCardInsertApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
boolean sdCardUnmountApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
SAB *p = (SAB *)pData;
char buffer[200];
p->getSdCardManager().end();
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"card\" : \"unmounted\" }");
wc->print(buffer);
return true;
}
boolean sdCardMountApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
SAB *p = (SAB *)pData;
char buffer[200];
if(p->getSdCardManager().begin(p->getSdCardConfig().getSPISpeed(), p->getPinConfig().getSPI_sdCard_cs()))
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"card\" : \"inserted\" }");
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"card\" : \"mounted\" }");
else
sprintf(buffer,"HTTP/1.1 500 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"error\", \"message\" : \"begin failed\" }");
wc->print(buffer);
return true;
}
boolean espRestartApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
ESP.restart();
return true;
}
boolean espResetApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
ESP.restart();
return true;
}

View File

@ -2,10 +2,14 @@
#define WEBAPI_H
#include "WebServerManager.h"
boolean helloServerApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean apiTesterApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean nextViewApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean rtcTimeApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean sdCardEjectApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean sdCardInsertApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean ViewByUIDApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean rtcGetTimeApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean rtcSetTimeApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean sdCardUnmountApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean sdCardMountApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean espRestartApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
boolean espResetApi(WEBServerManager::HttpRequestData&, WiFiClient*, void*);
#endif