Skip to main content

fr_rust/req/
req.rs

1// Macro for mapping basic routes safely
2#[macro_export]
3macro_rules! route {
4    ($method:ident, $path:literal, $handler:expr) => {
5        ::actix_web::web::$method().to($handler)
6    };
7    ($method:ident, $path:literal, $handler:expr, $($extra:tt)*) => {
8        ::actix_web::web::$method().to($handler).$($extra)*
9    };
10}
11
12// Generate the standard HTTP verb helper macros
13#[macro_export] macro_rules! get {     ($path:literal, $handler:expr $(, $($extra:tt)*)?) => { $crate::route!(get, $path, $handler $(, $($extra)*)?) }; }
14#[macro_export] macro_rules! post {    ($path:literal, $handler:expr $(, $($extra:tt)*)?) => { $crate::route!(post, $path, $handler $(, $($extra)*)?) }; }
15#[macro_export] macro_rules! put {     ($path:literal, $handler:expr $(, $($extra:tt)*)?) => { $crate::route!(put, $path, $handler $(, $($extra)*)?) }; }
16#[macro_export] macro_rules! delete {  ($path:literal, $handler:expr $(, $($extra:tt)*)?) => { $crate::route!(delete, $path, $handler $(, $($extra)*)?) }; }
17#[macro_export] macro_rules! patch {   ($path:literal, $handler:expr $(, $($extra:tt)*)?) => { $crate::route!(patch, $path, $handler $(, $($extra)*)?) }; }
18
19// Unified Routing Configurator Macro
20#[macro_export]
21macro_rules! routes {
22    ($cfg:ident => { $($item:expr),* $(,)? }) => {
23        {
24            $(
25                $cfg = $cfg.service($item);
26            )*
27        }
28    };
29}
30
31// Scope Builder Macro (Resolves without needing raw cfg)
32#[macro_export]
33macro_rules! scope {
34    ($path:literal $(, .$extra:ident($($args:tt)*))* => { $($routes:expr),* $(,)? }) => {
35        ::actix_web::web::scope($path)
36            $(.$extra($($args)*))*
37            $(.service($routes))*
38    };
39}
40
41// Resource Builder Macro
42#[macro_export]
43macro_rules! resource {
44    ($path:literal $(, .$extra:ident($($args:tt)*))* => { $($routes:expr),* $(,)? }) => {
45        ::actix_web::web::resource($path)
46            $(.$extra($($args)*))*
47            $(.route($routes))*
48    };
49}