mod endpoints;
mod router;
mod server;
mod service;
mod shutdown;
pub use endpoints::*;
pub use router::{HandlerFn, RouteEntry, Router};
pub use server::AutoServer;
pub use service::{FlatbedService, ServiceContext};
pub use shutdown::{shutdown_signal, ShutdownController};
use crate::{get_routes, RouteInfo};
pub fn build_router() -> Router {
let mut router = Router::default();
for ((path, _method), route_info) in get_routes().iter() {
let entry = RouteEntry {
info: *route_info,
handler: route_info.async_handler,
};
router.add_route(path, route_info.method.as_str(), entry);
}
router
}
pub fn build_router_with<F>(make_handler: F) -> Router
where
F: Fn(&RouteInfo) -> HandlerFn,
{
let mut router = Router::default();
for ((path, _method), route_info) in get_routes().iter() {
let handler = make_handler(route_info);
let entry = RouteEntry {
info: *route_info,
handler,
};
router.add_route(path, route_info.method.as_str(), entry);
}
router
}