graph_http/traits/
api_client_impl.rs1use 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}