hypershell_reqwest_components/providers/
url_encode.rs1use core::marker::PhantomData;
2use std::borrow::Cow;
3
4use cgp::prelude::*;
5use hypershell_components::components::{
6 CanExtractStringArg, StringArgExtractor, StringArgExtractorComponent,
7};
8use hypershell_components::dsl::UrlEncodeArg;
9use url::form_urlencoded;
10
11#[cgp_new_provider]
12impl<Context, Arg> StringArgExtractor<Context, UrlEncodeArg<Arg>> for UrlEncodeStringArg
13where
14 Context: CanExtractStringArg<Arg>,
15{
16 fn extract_string_arg(
17 context: &Context,
18 _phantom: PhantomData<UrlEncodeArg<Arg>>,
19 ) -> Cow<'_, str> {
20 let raw_arg = context.extract_string_arg(PhantomData);
21 form_urlencoded::byte_serialize(raw_arg.as_bytes()).collect()
22 }
23}