hypershell_reqwest_components/
presets.rs

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