hypershell_reqwest_components/providers/
method_arg.rs1use 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}