use proc_macro::TokenStream;
use quote::quote;
use syn::{ItemFn, ItemStruct};
pub fn middleware_impl(args: TokenStream, input: TokenStream) -> TokenStream {
let _middleware_args = if !args.is_empty() {
Some(args.to_string())
} else {
None
};
let input_tokens: proc_macro2::TokenStream = input.into();
if let Ok(input_fn) = syn::parse2::<ItemFn>(input_tokens.clone()) {
let expanded = quote! {
#input_fn
};
TokenStream::from(expanded)
} else if let Ok(input_struct) = syn::parse2::<ItemStruct>(input_tokens.clone()) {
let expanded = quote! {
#input_struct
};
TokenStream::from(expanded)
} else {
input_tokens.into()
}
}