ft_sdk/from_request/
config.rs

1pub 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}