feat: web server with REST API, captive portal, and management UI
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
40
src/web_server.h
Normal file
40
src/web_server.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include <functional>
|
||||
#include "settings.h"
|
||||
|
||||
class ImmichClient;
|
||||
class PowerManager;
|
||||
class WiFiManager;
|
||||
|
||||
class AppWebServer {
|
||||
public:
|
||||
void begin(SettingsManager& settings, ImmichClient& immich,
|
||||
PowerManager& power, WiFiManager& wifi);
|
||||
void setActionCallback(std::function<void(const String& action)> cb);
|
||||
bool isOTAInProgress();
|
||||
|
||||
private:
|
||||
AsyncWebServer _server{80};
|
||||
SettingsManager* _settings = nullptr;
|
||||
ImmichClient* _immich = nullptr;
|
||||
PowerManager* _power = nullptr;
|
||||
WiFiManager* _wifi = nullptr;
|
||||
std::function<void(const String& action)> _actionCb;
|
||||
bool _otaInProgress = false;
|
||||
|
||||
void setupCaptivePortal();
|
||||
void setupAPIRoutes();
|
||||
void setupStaticFiles();
|
||||
void setupOTA();
|
||||
|
||||
void handleGetStatus(AsyncWebServerRequest* request);
|
||||
void handleGetAlbums(AsyncWebServerRequest* request);
|
||||
void handlePostAlbumsSelect(AsyncWebServerRequest* request, uint8_t* data, size_t len);
|
||||
void handleGetSettings(AsyncWebServerRequest* request);
|
||||
void handlePostSettings(AsyncWebServerRequest* request, uint8_t* data, size_t len);
|
||||
void handlePostAction(AsyncWebServerRequest* request);
|
||||
void handlePostSetup(AsyncWebServerRequest* request, uint8_t* data, size_t len);
|
||||
};
|
||||
Reference in New Issue
Block a user