ft_sdk/from_request/
config.rs1pub struct Config<T: serde::de::DeserializeOwned>(pub T);
2
3impl<T: serde::de::DeserializeOwned> ft_sdk::FromRequest for Config<T> {
4 fn from_request(req: &http::Request<serde_json::Value>) -> ft_sdk::Result<Config<T>> {
5 let scheme: ft_sdk::Scheme = ft_sdk::Scheme::from_request(req)?;
6 let host: ft_sdk::Host = ft_sdk::Host::from_request(req)?;
7 let app_url = ft_sdk::from_request::app_url::from_request(
8 ft_sdk::from_request::app_url::CURRENT_APP_KEY,
9 req,
10 )?;
11
12 let url = ft_sdk::from_request::app_url::join(
13 ft_sdk::from_request::app_url::CURRENT_APP_KEY,
14 &app_url,
15 &scheme,
16 &host,
17 "config",
18 )?;
19
20 let req = http::Request::builder()
21 .uri(url)
22 .body(bytes::Bytes::new())?;
23
24 let res = ft_sdk::http::send(req).unwrap();
25
26 serde_json::from_slice(res.body())
27 .map_err(|e| e.into())
28 .map(Config)
29 }
30}
31
32impl<T: serde::de::DeserializeOwned> AsRef<T> for Config<T> {
33 fn as_ref(&self) -> &T {
34 &self.0
35 }
36}