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_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}