Skip to main content

feignhttp_codegen/
lib.rs

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_attribute]
39pub fn patch(attr: TokenStream, item: TokenStream) -> TokenStream {
40    http_impl(Method::PATCH, attr, item)
41}
42
43#[proc_macro_derive(Context, attributes(url_path, query, header, param))]
44pub fn feign_context(item: TokenStream) -> TokenStream {
45    feign_context_impl(item)
46}
47
48#[deprecated(
49    since = "0.6.0",
50    note = "`Feign` is deprecated, please use `Context` instead and it will be removed in future versions."
51)]
52#[proc_macro_derive(Feign, attributes(url_path, query, header, param))]
53pub fn feign_client(item: TokenStream) -> TokenStream {
54    leagcy_feign_client_impl(item)
55}