clientix-codegen 0.2.0

Library for building HTTP clients and requests declaratively with procedural macros - no need to write complex imperative or functional logic.
Documentation
pub(crate) mod signature;
pub(crate) mod method;
pub(crate) mod header;

pub use method::*;

use proc_macro::TokenStream;
use quote::quote;
use syn::__private::TokenStream2;
use clientix_core::prelude::reqwest::Method;
use crate::method::header::HeaderCompiler;

pub fn parse_method(method: Method, item: TokenStream, attrs: TokenStream) -> TokenStream {
    let method_config = MethodCompiler::parse(method, item, attrs);

    let compiled_declaration = method_config.compile_declaration();

    let expanded = quote! {
        #compiled_declaration
    };

    TokenStream::from(expanded)
}

pub fn parse_header(item: TokenStream, attrs: TokenStream) -> TokenStream {
    HeaderCompiler::parse(TokenStream2::from(attrs), true);
    TokenStream::from(item)
}