#pragma once #include "esp_http_server.h" #include #include #include "network/web_server_handler.h" #include "ui/apps/travel/settings/settings_handler.h" #include "external/mtr/mtr.h" #include "network/network.h" namespace travel { /** * @brief HTTP request handlers for Travel app settings web interface * * These handlers serve the web configuration page for MTR routes. */ class WebHandler { public: WebHandler( SettingHandler* setting_handler, NetworkHandler* network_handler ); ~WebHandler(); esp_err_t start_web_server(); esp_err_t stop_web_server(); std::string get_url() const; std::string get_device_ip() const; uint16_t get_port() const; bool is_running() const { return web_server_ && web_server_->is_running(); } private: std::string generate_auth_key_(); esp_err_t register_web_endpoints_(); // HTTP handlers static esp_err_t settings_page_handler_(httpd_req_t* req); static esp_err_t get_lines_handler_(httpd_req_t* req); static esp_err_t get_routes_handler_(httpd_req_t* req); static esp_err_t add_route_handler_(httpd_req_t* req); static esp_err_t remove_route_handler_(httpd_req_t* req); static esp_err_t save_settings_handler_(httpd_req_t* req); std::unique_ptr web_server_; SettingHandler* setting_handler_ = nullptr; NetworkHandler* network_handler_ = nullptr; std::unique_ptr mtr_handler_; std::string auth_key_; static constexpr uint16_t WEB_SERVER_PORT = 8081; }; } // namespace travel