diff --git a/examples/ESP32/WebServer_mod_gzip/WebServer_mod_gzip.ino b/examples/ESP32/WebServer_mod_gzip/WebServer_mod_gzip.ino index c1492c8..be62a19 100644 --- a/examples/ESP32/WebServer_mod_gzip/WebServer_mod_gzip.ino +++ b/examples/ESP32/WebServer_mod_gzip/WebServer_mod_gzip.ino @@ -203,7 +203,8 @@ void setup() // mod_gzip.enableCache(); // cache gz files mod_gzip.disableCache(); // ignore existing gz files, compress on the fly - server.on("/json", []() { + + server.on("/json", []() { // send gz compressed JSON int responseCode = 200; const char* myJsonData = "{\"ceci\":\"cela\",\"couci\":\"couça\",\"patati\":\"patata\"}"; server.sendHeader(String(F("Content-Type")), String(F("application/json")), true); @@ -221,6 +222,27 @@ void setup() LZPacker::compress( (uint8_t*)myJsonData, strlen(myJsonData), &server.client() ); }); + + server.on("/spiffs.tar.gz", []() { // compress SPIFFS files/folders on the fly + int responseCode = 200; + server.sendHeader(String(F("Content-Type")), String(F("application/tar+gzip")), true); + //server.sendHeader(String(F("Content-Encoding")), String(F("gzip"))); + server.sendHeader(String(F("Connection")), String(F("close"))); + // building HTTP response without "Content-Length" header isn't 100% standard, so we have to do this + String HTTPResponse = String(F("HTTP/1.1"))+' '+String(responseCode)+' '+server.responseCodeToString(responseCode)+"\r\n"; + size_t headersCount = server.responseHeaders(); + for(size_t i=0;i dirEntities; // storage for scanned dir entities + TarPacker::collectDirEntities(&dirEntities, &tarGzFS, "/", 10); // collect dir and files + TarGzPacker::compress(&tarGzFS, dirEntities, &server.client()); + }); + + server.addMiddleware( &mod_gzip ); server.begin();