- 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.
59 lines
1.5 KiB
C++
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
|