diff --git a/src/website.cpp b/src/website.cpp index 7b86092..5c36f58 100644 --- a/src/website.cpp +++ b/src/website.cpp @@ -218,8 +218,31 @@ void setupWebserver(AsyncWebServer &server) { // Route für Spoolman Setting server.on("/spoolman", HTTP_GET, [](AsyncWebServerRequest *request){ Serial.println("Anfrage für /spoolman erhalten"); - String html = loadHtmlWithHeader("/spoolman.html"); - html.replace("{{spoolmanUrl}}", spoolmanUrl); + + // Zuerst die gz-Datei laden + if (!SPIFFS.exists("/spoolman.html.gz")) { + request->send(404, "text/plain", "File not found"); + return; + } + + // Datei öffnen und in einen Puffer laden + File file = SPIFFS.open("/spoolman.html.gz", "r"); + size_t fileSize = file.size(); + uint8_t *gzippedContent = new uint8_t[fileSize]; + file.read(gzippedContent, fileSize); + file.close(); + + // Entpacken des gzippedContent in einen String + String html; + // TODO: Hier muss der gzippedContent entpackt werden + // Dies erfordert eine zusätzliche Bibliothek wie zlib + + // Ersetzungen vornehmen + String urlToReplace = spoolmanUrl; + if (urlToReplace.length() == 0) { + urlToReplace = ""; + } + html.replace("{{spoolmanUrl}}", urlToReplace); JsonDocument doc; if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) { @@ -235,7 +258,14 @@ void setupWebserver(AsyncWebServer &server) { html.replace("{{bambuCode}}", bambuCode ? bambuCode : ""); } - request->send(200, "text/html", html); + // Komprimierte Antwort senden + AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", html.c_str()); + response->addHeader("Content-Encoding", "gzip"); + response->addHeader("Cache-Control", CACHE_CONTROL); + request->send(response); + + // Speicher freigeben + delete[] gzippedContent; }); // Route für das Überprüfen der Spoolman-Instanz