diff --git a/src/webserver.h b/src/webserver.h index 34e1c2b..f9116c3 100644 --- a/src/webserver.h +++ b/src/webserver.h @@ -83,7 +83,10 @@ void initWebserver() } else if (const auto *changeValueDisplay = currentDisplay->asChangeValueDisplayInterface()) { - content += "shownValue()} + "\" />"; + content += "
"; } else { @@ -134,6 +137,44 @@ void initWebserver() webServer.send(302, "text/html", "ok"); }); + webServer.on("/setValue", HTTP_GET, [](){ + if (!webServer.hasArg("value")) + { + webServer.send(400, "text/plain", "value parameter missing"); + return; + } + + if (!currentDisplay) + { + webServer.send(400, "text/plain", "currentDisplay is null"); + return; + } + + auto *changeValueDisplay = currentDisplay->asChangeValueDisplayInterface(); + if (!changeValueDisplay) + { + webServer.send(400, "text/plain", "currentDisplay is a change value display"); + return; + } + + const auto valueStr = webServer.arg("value"); + + char *egal; + const auto value = std::strtol(std::begin(valueStr), &egal, 10); + + if (egal != std::end(valueStr)) + { + webServer.send(400, "text/plain", "value could not be parsed"); + return; + } + + changeValueDisplay->setShownValue(value); + + webServer.sendHeader("Connection", "close"); + webServer.sendHeader("Location", "/"); + webServer.send(302, "text/html", "ok"); + }); + webServer.begin(); }