request_pretreat/prefabs/
query.rs1use std::marker::PhantomData;
2
3use actix_web::error::QueryPayloadError;
4
5use crate::Treater;
6
7pub struct QueryArgs<T: for<'de> serde::Deserialize<'de>>(PhantomData<T>);
8
9impl<T> Treater for QueryArgs<T>
10where
11 T: for<'de> serde::Deserialize<'de>,
12{
13 type Fut = futures_util::future::Ready<Result<Self::Resp, Self::Err>>;
14
15 type Resp = T;
16
17 type Err = QueryPayloadError;
18
19 fn proc(req: &actix_web::HttpRequest, _: &mut actix_web::dev::Payload) -> Self::Fut {
20 let query = req.query_string();
21 let q =
22 actix_web::web::Query::<T>::from_query(query).map(actix_web::web::Query::into_inner);
23
24 futures_util::future::ready(q)
25 }
26}