graph_http/traits/
api_client_impl.rs

1use crate::api_impl::ODataQuery;
2use graph_error::GraphResult;
3use url::Url;
4
5pub trait ApiClientImpl: ODataQuery + Sized {
6    fn url(&self) -> Url;
7
8    fn render_path<S: AsRef<str>>(
9        &self,
10        path: S,
11        path_params_map: &serde_json::Value,
12    ) -> GraphResult<String>;
13
14    fn build_url<S: AsRef<str>>(
15        &self,
16        path: S,
17        path_params_map: &serde_json::Value,
18    ) -> GraphResult<Url> {
19        let path = self.render_path(path.as_ref(), path_params_map)?;
20        let mut vec: Vec<&str> = path.split('/').collect();
21        vec.retain(|s| !s.is_empty());
22        let mut url = self.url();
23        if let Ok(mut p) = url.path_segments_mut() {
24            p.extend(&vec);
25        }
26        Ok(url)
27    }
28}