Added new api end point to test the WEBServer cookie API

This commit is contained in:
Anatole SCHRAMM 2022-10-25 13:42:41 +02:00
parent 2c2f1da56e
commit fba428c977
3 changed files with 44 additions and 0 deletions

View File

@ -99,6 +99,7 @@ void setup()
sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/io/set/mode", &(ioSetModeApi), &sab, WEBServer<WEBClient>::GET); sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/io/set/mode", &(ioSetModeApi), &sab, WEBServer<WEBClient>::GET);
sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/ota/update/upload", &(otaUpdateUploadApi), NULL, WEBServer<WEBClient>::POST); sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/ota/update/upload", &(otaUpdateUploadApi), NULL, WEBServer<WEBClient>::POST);
sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/ota/update/device", &(otaUpdateRemoteApi), &sab, WEBServer<WEBClient>::GET); sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/ota/update/device", &(otaUpdateRemoteApi), &sab, WEBServer<WEBClient>::GET);
sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/web/cookietest", &(cookieTestApi), &sab, WEBServer<WEBClient>::GET);
sab.getIOManager().setISROnIOChange(&(ioISR), GPIO_3_RX); sab.getIOManager().setISROnIOChange(&(ioISR), GPIO_3_RX);

View File

@ -661,3 +661,45 @@ boolean otaUpdateRemoteApi(WEBServer<WEBClient> *ws, WEBServer<WEBClient>::HttpR
return true; return true;
} }
boolean cookieTestApi(WEBServer<WEBClient> *ws, WEBServer<WEBClient>::HttpRequestData &HRD, WiFiClient *wc, void *pData)
{
(void)pData;
//We first check what kind of action we want to do:
if(HRD.getParams("set") != NULL)
{
uint8_t cookieCount(HRD.getParams.count() - 1);
Serial.printf("Cookies to be set/unset : %u\n", cookieCount);
for(uint8_t i(0); i < HRD.getParams.count(); i++)
{
if(strcmp(HRD.getParams.getParameter(i), "set") != 0)
{
if(!strlen(HRD.getParams.getAt(i)->getString())) //We ask to remove the cookie
{
Serial.printf("Unsetting cookie %s->%s\n", HRD.getParams.getParameter(i), HRD.getParams.getAt(i)->getString());
ws->addCookies(HRD.getParams.getParameter(i), HRD.getParams.getAt(i)->getString(), 0);
}
else //We add the cookie
{
Serial.printf("Setting cookie %s->%s\n", HRD.getParams.getParameter(i), HRD.getParams.getAt(i)->getString());
ws->addCookies(HRD.getParams.getParameter(i), HRD.getParams.getAt(i)->getString(), 3600);
}
}
}
ws->sendHTTPResponse(wc, HttpConstants::httpMIMETypeToString(HttpConstants::TEXT_PLAIN)); //We dont know the content length
wc->printf("Setting/Unsetting %u cookies : \n", cookieCount);
}
else //We print the setted cookies
{
ws->sendHTTPResponse(wc, HttpConstants::httpMIMETypeToString(HttpConstants::TEXT_PLAIN)); //We dont know the content length
wc->printf("Cookies to display : %u\n", HRD.cookies.count());
for(uint8_t i(0); i < HRD.cookies.count(); i++)
{
wc->printf("cookie %u : %s->%s\n", i, HRD.cookies.getParameter(i), HRD.cookies.getAt(i)->value.getString());
}
}
return true;
}

View File

@ -32,5 +32,6 @@ boolean ioGetModeApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestDat
boolean ioSetModeApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*); boolean ioSetModeApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*);
boolean otaUpdateUploadApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*); boolean otaUpdateUploadApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*);
boolean otaUpdateRemoteApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*); boolean otaUpdateRemoteApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*);
boolean cookieTestApi(WEBServer<WEBClient>*, WEBServer<WEBClient>::HttpRequestData&, WiFiClient*, void*);
#endif #endif