#pragma once #include "filesys.h" #include class HTTPServer : public ESP8266WebServer { private: const char* rootDir; bool addRootFileHandler(); bool formatFS() { return format_fs(); } void listRoot() { ls(rootDir); } public: HTTPServer(const int _port, const char* _rootDir) : ESP8266WebServer(_port), rootDir(_rootDir) { } ~HTTPServer() { Serial.printf("[HTTPServer] shut down ...\n\r"); } bool start() { if(!mount_fs()) return false; Serial.printf("[HTTPServer] LittleFS mounted !\n\r"); Serial.printf("[HTTPServer] root:\n\r"); this->listRoot(); Serial.printf("\n\r"); // https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11 on("/compress.html", [this]() { File f = open("/compress.html.gz"); if (!f) { Serial.println("Failed to open file for reading"); } else { Serial.println("Streaming /compress.html.gz to client"); const String cont = "text/html"; streamFile(f, cont); } }); if( this->addRootFileHandler() ){ this->begin(); Serial.printf("[HTTPServer] Server active on Port 80 !\n\r"); return true; } Serial.printf("[HTTPServer] Not starting Server, something went wrong !\n\r"); return false; } };