hypershell_reqwest_components/
presets.rs

1#[cgp::re_export_imports]
2mod preset {
3    use cgp::core::component::UseDelegate;
4    use cgp::extra::handler::{HandlerComponent, PipeHandlers};
5    use cgp::prelude::{cgp_preset, *};
6    use hypershell_components::components::{
7        HttpMethodTypeProviderComponent, MethodArgExtractorComponent, StringArgExtractorComponent,
8        UrlTypeProviderComponent,
9    };
10    use hypershell_components::dsl::{
11        GetMethod, Header, PostMethod, SimpleHttpRequest, StreamingHttpRequest, UrlEncodeArg,
12        WithHeaders,
13    };
14    use hypershell_tokio_components::presets::ToTokioAsyncReadHandlers;
15    use hypershell_tokio_components::providers::WrapFuturesAsyncRead;
16    use reqwest::{Method, Url};
17
18    use crate::components::RequestBuilderUpdaterComponent;
19    use crate::dsl::CoreHttpRequest;
20    use crate::providers::{
21        ExtractReqwestMethod, HandleCoreHttpRequest, HandleSimpleHttpRequest,
22        HandleStreamingHttpRequest, StreamToBody, UpdateRequestHeader, UpdateRequestHeaders,
23        UrlEncodeStringArg,
24    };
25
26    cgp_preset! {
27        HypershellReqwestPreset {
28            HandlerComponent:
29                ReqwestHandlerPreset::Provider,
30            HttpMethodTypeProviderComponent:
31                UseType<Method>,
32            UrlTypeProviderComponent:
33                UseType<Url>,
34            StringArgExtractorComponent:
35                ReqwestStringArgExtractorPreset::Provider,
36            MethodArgExtractorComponent:
37                MethodArgExtractorPreset::Provider,
38            RequestBuilderUpdaterComponent:
39                RequestBuilderUpdaterPreset::Provider,
40        }
41    }
42
43    cgp_preset! {
44        #[wrap_provider(UseDelegate)]
45        ReqwestHandlerPreset {
46            <Method, Url, Headers> SimpleHttpRequest<Method, Url, Headers>:
47                HandleSimpleHttpRequest,
48            <Method, Url, Headers> StreamingHttpRequest<Method, Url, Headers>:
49                PipeHandlers<Product![
50                    ToTokioAsyncReadHandlers::Provider,
51                    StreamToBody,
52                    HandleStreamingHttpRequest,
53                    WrapFuturesAsyncRead,
54                ]>,
55            <Method, Url, Headers> CoreHttpRequest<Method, Url, Headers>:
56                HandleCoreHttpRequest,
57        }
58    }
59
60    cgp_preset! {
61        #[wrap_provider(UseDelegate)]
62        MethodArgExtractorPreset {
63            [
64                GetMethod,
65                PostMethod,
66            ]:
67                ExtractReqwestMethod,
68        }
69    }
70
71    cgp_preset! {
72        #[wrap_provider(UseDelegate)]
73        ReqwestStringArgExtractorPreset {
74            <Arg> UrlEncodeArg<Arg>:
75                UrlEncodeStringArg,
76        }
77    }
78
79    cgp_preset! {
80        #[wrap_provider(UseDelegate)]
81        RequestBuilderUpdaterPreset {
82            <Args> WithHeaders<Args>:
83                UpdateRequestHeaders,
84            <Key, Value> Header<Key, Value>:
85                UpdateRequestHeader,
86        }
87    }
88}