extern crate proc_macro;
use crate::expanders::ApiClientExpander;
use crate::input::ApiClientInput;
use syn::parse_macro_input;
mod error;
mod expanders;
mod input;
fn expand_macro(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
let input = parse_macro_input!(input as ApiClientInput);
match ApiClientExpander::new(input).expand() {
Ok(tokens) => tokens.into(),
Err(err) => err.into_compile_error().into(),
}
}
#[proc_macro]
pub fn api_client(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
expand_macro(input)
}
#[proc_macro]
pub fn http_provider(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
expand_macro(input)
}