feat: implement gzip compression for /spoolman route response
This commit is contained in:
parent
75fe6b55ad
commit
3ec23a9f79
@ -218,8 +218,31 @@ void setupWebserver(AsyncWebServer &server) {
|
|||||||
// Route für Spoolman Setting
|
// Route für Spoolman Setting
|
||||||
server.on("/spoolman", HTTP_GET, [](AsyncWebServerRequest *request){
|
server.on("/spoolman", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||||
Serial.println("Anfrage für /spoolman erhalten");
|
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;
|
JsonDocument doc;
|
||||||
if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) {
|
if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) {
|
||||||
@ -235,7 +258,14 @@ void setupWebserver(AsyncWebServer &server) {
|
|||||||
html.replace("{{bambuCode}}", bambuCode ? bambuCode : "");
|
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
|
// Route für das Überprüfen der Spoolman-Instanz
|
||||||
|
Loading…
x
Reference in New Issue
Block a user