8#include <unordered_map>
9#include <unordered_set>
38 : prefix_(prefix), parent_(parent) {}
46 : router_(router), method_(method), path_(path), mws_(
std::move(mws)) {}
59 std::vector<Middleware> mws_;
85 void group(
const std::string& prefix, std::function<
void(
Router&)> callback);
111 void ws(
const std::string& path,
WsHandler handler);
129 std::string make_route_key(
http::HttpMethod method, std::string_view path)
const;
130 std::vector<std::string> split_path(std::string_view path)
const;
134 std::vector<Middleware> local_middlewares_;
137 std::unordered_map<std::string, RouteHandler> routes_;
138 std::unordered_map<std::string, WsHandler> ws_routes_;
139 std::vector<DynamicRoute> dynamic_routes_;
140 std::vector<Middleware> middlewares_;
142 std::unordered_set<std::string> stream_routes_;
143 std::vector<DynamicRoute> dynamic_stream_routes_;
Represents an active WebSocket connection.
Definition WebSocketConnection.hpp:56
A builder class for fluent route configuration.
Definition Router.hpp:43
RouteBuilder & description(const std::string &s)
Definition Router.hpp:49
void handler(RouteHandler h)
Definition Router.cpp:314
RouteBuilder & res_body(int status, const std::string &schema_name)
Definition Router.hpp:52
RouteBuilder(Router &router, http::HttpMethod method, const std::string &path, std::vector< Middleware > mws={})
Definition Router.hpp:45
RouteBuilder & summary(const std::string &s)
Definition Router.hpp:48
RouteBuilder & req_body(const std::string &schema_name)
Definition Router.hpp:51
RouteBuilder & tag(const std::string &t)
Definition Router.hpp:50
Manages routing of HTTP requests to their appropriate handlers.
Definition Router.hpp:30
bool has_ws_route(const std::string &path) const
Definition Router.cpp:36
void ws(const std::string &path, WsHandler handler)
Definition Router.cpp:214
void use(Middleware m)
Definition Router.cpp:223
Router & get(const std::string &path, RouteHandler handler)
Definition Router.cpp:102
void add_route(http::HttpMethod method, const std::string &path, RouteHandler handler)
Definition Router.cpp:98
Router & patch(const std::string &path, RouteHandler handler)
Definition Router.cpp:132
void on_error(ErrorHandler handler)
Definition Router.cpp:231
bool is_stream_route(http::HttpMethod method, const std::string &path) const
Definition Router.cpp:184
Router & del(const std::string &path, RouteHandler handler)
Definition Router.cpp:142
WsHandler get_ws_route(const std::string &path) const
Definition Router.cpp:40
RouteBuilder route(const std::string &path, http::HttpMethod method=http::HttpMethod::GET)
Initiates a route builder for a specific path and method.
Definition Router.hpp:75
Router & options(const std::string &path, RouteHandler handler)
Definition Router.cpp:152
Router & put(const std::string &path, RouteHandler handler)
Definition Router.cpp:122
Router(const std::string &prefix="", Router *parent=nullptr)
Constructs a new Router.
Definition Router.hpp:37
void add_route_with_meta(http::HttpMethod method, const std::string &path, std::vector< Middleware > mws, const openapi::RouteMetadata &meta, RouteHandler handler)
Definition Router.cpp:58
void add_stream_route(http::HttpMethod method, const std::string &path, RouteHandler handler)
Definition Router.cpp:162
void group(const std::string &prefix, std::function< void(Router &)> callback)
Creates a route group with a specific prefix.
Definition Router.cpp:48
Router & post(const std::string &path, RouteHandler handler)
Definition Router.cpp:112
HttpMethod
Represents standard HTTP methods.
Definition HttpRequest.hpp:17
Definition HandlerWrapper.hpp:12
std::function< bool(http::HttpRequest &, std::shared_ptr< http::ResponseWriter >)> Middleware
Definition Router.hpp:17
std::function< void(const std::exception &, http::HttpRequest &, std::shared_ptr< http::ResponseWriter >)> ErrorHandler
Definition Router.hpp:19
std::function< void(http::HttpRequest &, std::shared_ptr< http::ResponseWriter >)> RouteHandler
Definition Router.hpp:16
std::function< void(http::websocket::WebSocketConnection &)> WsHandler
Definition Router.hpp:18
Represents an incoming HTTP request.
Definition HttpRequest.hpp:22
RouteHandler handler
Definition Router.hpp:24
http::HttpMethod method
Definition Router.hpp:22
std::vector< std::string > path_segments
Definition Router.hpp:23