1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#[cfg(feature="rocket")]
mod rocket;
#[cfg(feature="axum")]
mod axum;

use proc_macro::TokenStream;

#[proc_macro_attribute]
pub fn get_api(header: TokenStream, function: TokenStream) -> TokenStream {
    cfg_if::cfg_if! {
        if #[cfg(feature="rocket")] {
            rocket::get::get_api(header, function)
        } else if #[cfg(feature="axum")] {
            axum::get::get_api(header, function)
        }
    }
}

#[proc_macro_attribute]
pub fn post_api(header: TokenStream, function: TokenStream) -> TokenStream {
    cfg_if::cfg_if! {
        if #[cfg(feature="rocket")] {
            rocket::post::post_api(header, function)
        } else if #[cfg(feature="axum")] {
            axum::post::post_api(header, function)
        }
    }
}

#[proc_macro_attribute]
pub fn routes_module(header: TokenStream, inner: TokenStream) -> TokenStream {
    cfg_if::cfg_if! {
        if #[cfg(feature="rocket")] {
            rocket::routes::routes_module(header, inner)
        } else if #[cfg(feature="axum")] {
            axum::routes::routes_module(header, inner)
        }
    }
}

#[proc_macro]
pub fn routes(inner: TokenStream) -> TokenStream {
    cfg_if::cfg_if! {
        if #[cfg(feature="rocket")] {
            rocket::routes::routes(inner)
        } else if #[cfg(feature="axum")] {
            axum::routes::routes(inner)
        }
    }
}