#[macro_export]
macro_rules! define_routes {
(
$(
$(#[$attr:meta])*
$name:literal => {
category: $category:expr,
priority: $priority:expr,
auth: $auth:expr,
description: $desc:expr,
handler: $handler:expr
}
),* $(,)?
) => {
pub fn register_routes(
routes: &mut quicburn_server::route_map::RouteTable,
registry: &mut quicburn_shared::routes::RouteRegistry,
) {
$(
$(#[$attr])*
registry.register(
$name,
$category,
$priority,
$auth,
Some($desc),
);
let route_id = quicburn_shared::routes::route_id($name);
routes.insert(
route_id,
quicburn_server::route_map::RouteEntry {
route: route_id,
name: $name,
requires_auth: $auth,
handler: Box::new($handler),
},
);
)*
}
};
}
#[macro_export]
macro_rules! single_route {
(
$(#[$meta:meta])*
$name:literal,
category: $category:expr,
priority: $priority:expr,
auth: $auth:expr,
description: $desc:expr,
handler: $handler:expr
) => {
pub fn register_route(
routes: &mut quicburn_server::route_map::RouteTable,
registry: &mut quicburn_shared::routes::RouteRegistry,
) {
$(#[$meta])*
registry.register(
$name,
$category,
$priority,
$auth,
Some($desc),
);
let route_id = quicburn_shared::routes::route_id($name);
routes.insert(
route_id,
quicburn_server::route_map::RouteEntry {
route: route_id,
name: $name,
requires_auth: $auth,
handler: Box::new($handler),
},
);
}
};
}
#[macro_export]
macro_rules! public_route_def {
(
$name:literal,
category: $category:expr,
priority: $priority:expr,
description: $desc:expr,
handler: $handler:expr
) => {
$crate::single_route! {
$name,
category: $category,
priority: $priority,
auth: false,
description: $desc,
handler: $handler
}
};
}
#[macro_export]
macro_rules! protected_route_def {
(
$name:literal,
category: $category:expr,
priority: $priority:expr,
description: $desc:expr,
handler: $handler:expr
) => {
$crate::single_route! {
$name,
category: $category,
priority: $priority,
auth: true,
description: $desc,
handler: $handler
}
};
}