1mod method;
2mod client;
3mod return_kind;
4
5use proc_macro::TokenStream;
6use quote::quote;
7use syn::{parse_macro_input, ItemStruct};
8use clientix_core::prelude::reqwest::Method;
9use crate::client::parse_client;
10use crate::method::parse_method;
11
12#[proc_macro_attribute]
13pub fn clientix(attrs: TokenStream, item: TokenStream) -> TokenStream {
14 parse_client(item, attrs)
15}
16
17#[proc_macro_attribute]
18pub fn get(attrs: TokenStream, item: TokenStream) -> TokenStream {
19 parse_method(Method::GET, item, attrs)
20}
21
22#[proc_macro_attribute]
23pub fn post(attrs: TokenStream, item: TokenStream) -> TokenStream {
24 parse_method(Method::POST, item, attrs)
25}
26
27#[proc_macro_attribute]
28pub fn put(attrs: TokenStream, item: TokenStream) -> TokenStream {
29 parse_method(Method::PUT, item, attrs)
30}
31
32#[proc_macro_attribute]
33pub fn delete(attrs: TokenStream, item: TokenStream) -> TokenStream {
34 parse_method(Method::DELETE, item, attrs)
35}
36
37#[proc_macro_attribute]
38pub fn head(attrs: TokenStream, item: TokenStream) -> TokenStream {
39 parse_method(Method::HEAD, item, attrs)
40}
41
42#[proc_macro_attribute]
43pub fn options(attrs: TokenStream, item: TokenStream) -> TokenStream {
44 parse_method(Method::OPTIONS, item, attrs)
45}
46
47#[proc_macro_attribute]
48pub fn patch(attrs: TokenStream, item: TokenStream) -> TokenStream {
49 parse_method(Method::PATCH, item, attrs)
50}
51
52#[proc_macro_attribute]
53pub fn header(attrs: TokenStream, item: TokenStream) -> TokenStream {
54 TokenStream::default() }
56
57#[proc_macro_attribute]
58pub fn data_transfer(_: TokenStream, item: TokenStream) -> TokenStream {
59 let item = parse_macro_input!(item as ItemStruct);
60
61 TokenStream::from(quote! {
62 #[derive(clientix::prelude::serde::Serialize, clientix::prelude::serde::Deserialize, Debug, Clone)]
63 #[serde(crate = "clientix::prelude::serde")]
64 #item
65 })
66}
67
68