hypershell_reqwest_components/providers/
method_arg.rs

1use core::marker::PhantomData;
2
3use cgp::prelude::*;
4use hypershell_components::components::{
5    HasHttpMethodType, MethodArgExtractor, MethodArgExtractorComponent,
6};
7use hypershell_components::dsl::{DeleteMethod, GetMethod, PostMethod, PutMethod};
8use reqwest::Method;
9
10pub struct ExtractReqwestMethod;
11
12#[cgp_provider]
13impl<Context> MethodArgExtractor<Context, GetMethod> for ExtractReqwestMethod
14where
15    Context: HasHttpMethodType<HttpMethod = Method>,
16{
17    fn extract_method_arg(_context: &Context, _phantom: PhantomData<GetMethod>) -> Method {
18        Method::GET
19    }
20}
21
22#[cgp_provider]
23impl<Context> MethodArgExtractor<Context, PostMethod> for ExtractReqwestMethod
24where
25    Context: HasHttpMethodType<HttpMethod = Method>,
26{
27    fn extract_method_arg(_context: &Context, _phantom: PhantomData<PostMethod>) -> Method {
28        Method::POST
29    }
30}
31
32#[cgp_provider]
33impl<Context> MethodArgExtractor<Context, PutMethod> for ExtractReqwestMethod
34where
35    Context: HasHttpMethodType<HttpMethod = Method>,
36{
37    fn extract_method_arg(_context: &Context, _phantom: PhantomData<PutMethod>) -> Method {
38        Method::PUT
39    }
40}
41
42#[cgp_provider]
43impl<Context> MethodArgExtractor<Context, DeleteMethod> for ExtractReqwestMethod
44where
45    Context: HasHttpMethodType<HttpMethod = Method>,
46{
47    fn extract_method_arg(_context: &Context, _phantom: PhantomData<DeleteMethod>) -> Method {
48        Method::DELETE
49    }
50}