40#include "platforms/esp/is_esp.h"
230 void onExit()
override;
233 class ServerAsyncRunner;
271 static int handle_esp_request(
void* req);
Request() FL_NOEXCEPT=default
const string & http_version() const
Get HTTP version (e.g., "HTTP/1.1")
const string & path() const
Get request path (e.g., "/", "/api/status")
optional< string > header(const string &name) const
Get header value by name (case-insensitive)
const string & body() const
Get request body (for POST/PUT requests)
bool is_get() const
Check if request is GET.
map< string, string > mHeaders
const string & method() const
Get HTTP method (e.g., "GET", "POST", "PUT", "DELETE")
map< string, string > mQuery
bool has_body() const
Check if request has a body.
optional< string > query(const string ¶m) const
Get query parameter value by name.
bool is_post() const
Check if request is POST.
HTTP request object (immutable, passed by const reference)
static Response not_found()
Factory method for 404 Not Found response.
Response & json(const class json &data)
Set JSON response body with automatic Content-Type header.
static Response internal_error(const string &message)
Factory method for 500 Internal Server Error response.
Response & status(int code)
Set HTTP status code.
Response & body(const string &content)
Set response body.
static Response ok(const string &body="")
Factory method for 200 OK response.
Response & header(const string &name, const string &value)
Add HTTP header.
map< string, string > mHeaders
static Response bad_request(const string &message)
Factory method for 400 Bad Request response.
HTTP response builder (fluent interface)
void del(const string &path, RouteHandler handler)
Convenience method for DELETE routes.
optional< Request > read_request(ClientConnection &client)
void get(const string &path, RouteHandler handler)
Convenience method for GET routes.
bool is_running() const
Check if server is running.
vector< ClientConnection > mClientSockets
void put(const string &path, RouteHandler handler)
Convenience method for PUT routes.
~Server() FL_NOEXCEPT
Destructor (stops server if running)
void accept_connections()
vector< RouteEntry > mRoutes
int port() const
Get server port.
void stop()
Stop server and close all connections.
bool send_response(int client_fd, const Response &response)
void post(const string &path, RouteHandler handler)
Convenience method for POST routes.
string last_error() const
Get last error message.
void cleanup_stale_connections()
bool start(int port=8080)
Start server on specified port.
Server() FL_NOEXCEPT
Constructor.
size_t process_requests()
size_t update()
Update server (process pending requests non-blocking)
fl::unique_ptr< ServerAsyncRunner > mAsyncRunner
optional< RouteHandler > find_handler(const string &method, const string &path) const
void route(const string &method, const string &path, RouteHandler handler)
Register route handler using fl::function.
bool setup_listen_socket(int port)
void close_client(size_t index)
function< Response(const Request &)> RouteHandler
Route handler function signature Takes const reference to Request, returns Response by value.
constexpr int type_rank< T >::value
asio::http::Request http_request
MapRedBlackTree< Key, T, Compare, fl::allocator_slab< char > > map
asio::http::Response http_response
asio::http::Server HttpServer
Base definition for an LED controller.