#![recursion_limit = "512"]
#![allow(clippy::match_like_matches_macro)]
extern crate proc_macro;
use proc_macro::TokenStream as TokenStream1;
use syn::{parse_macro_input, AttributeArgs, Item, ItemImpl};
mod controller;
mod guard;
mod middleware;
mod openapi;
mod utils;
#[proc_macro_attribute]
pub fn controller(args: TokenStream1, input: TokenStream1) -> TokenStream1 {
let args = parse_macro_input!(args as AttributeArgs);
let input = parse_macro_input!(input as ItemImpl);
let expanded = controller::expand_controller(args, input).unwrap_or_else(|e| e.to_compile_error());
TokenStream1::from(expanded)
}
#[proc_macro_attribute]
pub fn middleware(_args: TokenStream1, input: TokenStream1) -> TokenStream1 {
let input = parse_macro_input!(input as ItemImpl);
let expanded = middleware::expand_middleware(input).unwrap_or_else(|e| e.to_compile_error());
TokenStream1::from(expanded)
}
#[proc_macro_attribute]
pub fn guard(_args: TokenStream1, input: TokenStream1) -> TokenStream1 {
let input = parse_macro_input!(input as ItemImpl);
let expanded = guard::expand_guard(input).unwrap_or_else(|e| e.to_compile_error());
TokenStream1::from(expanded)
}
#[proc_macro_attribute]
pub fn openapi(args: TokenStream1, input: TokenStream1) -> TokenStream1 {
let args = parse_macro_input!(args as AttributeArgs);
let parsed_input = parse_macro_input!(input as Item);
let expanded = openapi::validate_openapi(args, parsed_input).unwrap_or_else(|e| e.to_compile_error());
TokenStream1::from(expanded)
}