Files
ink-board/main/ui/apps/travel/web/web_handlers.h
GW_MC c4635948e4 feat(travel): Implement settings UI and web server for MTR route configuration
- Added MainUIHandler class to manage the main UI and polling for arrival data.
- Introduced SettingsUI class for displaying QR code and configuration options.
- Created SettingsUIHandler to manage settings UI lifecycle and web server interactions.
- Developed WebHandler to handle HTTP requests for MTR route settings, including adding and removing routes.
- Implemented web endpoints for fetching MTR lines, routes, and saving settings.
- Enhanced UI with responsive design for e-ink displays and added error handling for web interactions.
2026-02-03 19:26:53 +08:00

59 lines
1.5 KiB
C++

#pragma once
#include "esp_http_server.h"
#include <string>
#include <memory>
#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<WebServerHandler> web_server_;
SettingHandler* setting_handler_ = nullptr;
NetworkHandler* network_handler_ = nullptr;
std::unique_ptr<MTRNextTrainHandler> mtr_handler_;
std::string auth_key_;
static constexpr uint16_t WEB_SERVER_PORT = 8081;
};
} // namespace travel