From fba428c9778088a0c68d3204de59f71b003c7a41 Mon Sep 17 00:00:00 2001 From: Anatole SCHRAMM Date: Tue, 25 Oct 2022 13:42:41 +0200 Subject: [PATCH] Added new api end point to test the WEBServer cookie API --- src/app/app.ino | 1 + src/app/webApi.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ src/app/webApi.h | 1 + 3 files changed, 44 insertions(+) diff --git a/src/app/app.ino b/src/app/app.ino index e577bfd..4346eae 100644 --- a/src/app/app.ino +++ b/src/app/app.ino @@ -99,6 +99,7 @@ void setup() sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/io/set/mode", &(ioSetModeApi), &sab, WEBServer::GET); sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/ota/update/upload", &(otaUpdateUploadApi), NULL, WEBServer::POST); sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/ota/update/device", &(otaUpdateRemoteApi), &sab, WEBServer::GET); + sab.getWebServerManager().getWEBServer().addApiRoutine("/sab/web/cookietest", &(cookieTestApi), &sab, WEBServer::GET); sab.getIOManager().setISROnIOChange(&(ioISR), GPIO_3_RX); diff --git a/src/app/webApi.cpp b/src/app/webApi.cpp index b1aabb8..57462b2 100644 --- a/src/app/webApi.cpp +++ b/src/app/webApi.cpp @@ -661,3 +661,45 @@ boolean otaUpdateRemoteApi(WEBServer *ws, WEBServer::HttpR return true; } + +boolean cookieTestApi(WEBServer *ws, WEBServer::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; +} diff --git a/src/app/webApi.h b/src/app/webApi.h index a92d65b..e6a0683 100644 --- a/src/app/webApi.h +++ b/src/app/webApi.h @@ -32,5 +32,6 @@ boolean ioGetModeApi(WEBServer*, WEBServer::HttpRequestDat boolean ioSetModeApi(WEBServer*, WEBServer::HttpRequestData&, WiFiClient*, void*); boolean otaUpdateUploadApi(WEBServer*, WEBServer::HttpRequestData&, WiFiClient*, void*); boolean otaUpdateRemoteApi(WEBServer*, WEBServer::HttpRequestData&, WiFiClient*, void*); +boolean cookieTestApi(WEBServer*, WEBServer::HttpRequestData&, WiFiClient*, void*); #endif