1mod enu;
2mod func;
3mod leagcy;
4mod structure;
5mod util;
6
7use enu::Method;
8use func::http_impl;
9use leagcy::leagcy_feign_client_impl;
10use proc_macro::TokenStream;
11use structure::{feign_context_impl, feign_impl};
12
13#[proc_macro_attribute]
14pub fn feign(attr: TokenStream, item: TokenStream) -> TokenStream {
15 feign_impl(attr, item)
16}
17
18#[proc_macro_attribute]
19pub fn get(attr: TokenStream, item: TokenStream) -> TokenStream {
20 http_impl(Method::GET, attr, item)
21}
22
23#[proc_macro_attribute]
24pub fn post(attr: TokenStream, item: TokenStream) -> TokenStream {
25 http_impl(Method::POST, attr, item)
26}
27
28#[proc_macro_attribute]
29pub fn put(attr: TokenStream, item: TokenStream) -> TokenStream {
30 http_impl(Method::PUT, attr, item)
31}
32
33#[proc_macro_attribute]
34pub fn delete(attr: TokenStream, item: TokenStream) -> TokenStream {
35 http_impl(Method::DELETE, attr, item)
36}
37
38#[proc_macro_derive(Context, attributes(url_path, query, header, param))]
39pub fn feign_context(item: TokenStream) -> TokenStream {
40 feign_context_impl(item)
41}
42
43#[deprecated(
44 since = "0.6.0",
45 note = "`Feign` is deprecated, please use `Context` instead and it will be removed in future versions."
46)]
47#[proc_macro_derive(Feign, attributes(url_path, query, header, param))]
48pub fn feign_client(item: TokenStream) -> TokenStream {
49 leagcy_feign_client_impl(item)
50}