feat: implement gzip compression for /spoolman route response

This commit is contained in:
Manuel Weiser 2025-02-16 12:54:24 +01:00
parent 75fe6b55ad
commit 3ec23a9f79

View File

@ -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