summaryrefslogtreecommitdiff
path: root/include/pio/libs/http_server/homekit/http_server.h
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-06-10 23:20:37 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-06-10 23:20:37 +0300
commita6d8ba93056c1a4e243d56da447e241b2504fae2 (patch)
tree3ee5372ef4e4a2b8532bf8bc57d7151d77d96f71 /include/pio/libs/http_server/homekit/http_server.h
parentb0bf43e6a272d42a55158e657bd937cb82fc3d8d (diff)
move files again
Diffstat (limited to 'include/pio/libs/http_server/homekit/http_server.h')
-rw-r--r--include/pio/libs/http_server/homekit/http_server.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/include/pio/libs/http_server/homekit/http_server.h b/include/pio/libs/http_server/homekit/http_server.h
new file mode 100644
index 0000000..8725a88
--- /dev/null
+++ b/include/pio/libs/http_server/homekit/http_server.h
@@ -0,0 +1,62 @@
+#ifndef COMMON_HOMEKIT_HTTP_SERVER_H
+#define COMMON_HOMEKIT_HTTP_SERVER_H
+
+#include <ESP8266WebServer.h>
+#include <Ticker.h>
+#include <memory>
+#include <list>
+#include <utility>
+
+#include <homekit/config.h>
+#include <homekit/wifi.h>
+#include <homekit/static.h>
+
+namespace homekit {
+
+struct OTAStatus {
+ bool invalidMd5;
+
+ OTAStatus() : invalidMd5(false) {}
+
+ inline void clean() {
+ invalidMd5 = false;
+ }
+};
+
+using files::StaticFile;
+
+class HttpServer {
+private:
+ ESP8266WebServer server;
+ Ticker restartTimer;
+ std::shared_ptr<std::list<wifi::ScanResult>> scanResults;
+ OTAStatus ota;
+
+ char* scanBuf;
+ size_t scanBufSize;
+
+ void sendGzip(const StaticFile& file, PGM_P content_type);
+ void sendError(const String& message);
+
+ bool getInputParam(const char* field_name, size_t max_len, String& dst);
+ virtual void ota_led() const;
+
+public:
+ explicit HttpServer(std::shared_ptr<std::list<wifi::ScanResult>> scanResults)
+ : server(80)
+ , scanResults(std::move(scanResults))
+ , scanBufSize(512) {
+ scanBuf = new char[scanBufSize];
+ };
+
+ ~HttpServer() {
+ delete[] scanBuf;
+ }
+
+ void start();
+ void loop();
+};
+
+}
+
+#endif //COMMON_HOMEKIT_HTTP_SERVER_H