graph_rs_sdk/batch/
mod.rs

1use crate::api_default_imports::*;
2use crate::header::{HeaderMap, HeaderValue, CONTENT_TYPE};
3
4api_client!(BatchApiClient);
5
6impl BatchApiClient {
7    pub fn batch<B: serde::Serialize>(&self, batch: &B) -> RequestHandler {
8        let body_result = serde_json::to_string(batch).map_err(GraphFailure::from);
9        let url_result = self.build_url("$batch", &serde_json::json!({}));
10
11        let rc_result = RequestComponents::try_from((
12            self.resource_config.resource_identity,
13            Method::POST,
14            url_result,
15        ));
16
17        match rc_result {
18            Ok(rc) => {
19                let mut header_map = HeaderMap::new();
20                header_map
21                    .entry(CONTENT_TYPE)
22                    .or_insert(HeaderValue::from_static("application/json"));
23
24                match body_result {
25                    Ok(body) => RequestHandler::new(
26                        self.client.clone(),
27                        rc,
28                        None,
29                        Some(BodyRead::new(body)),
30                    )
31                    .headers(header_map),
32                    Err(err) => RequestHandler::new(self.client.clone(), rc, Some(err), None)
33                        .headers(header_map),
34                }
35            }
36            Err(err) => {
37                let rc = RequestComponents::new(
38                    self.resource_config.resource_identity,
39                    self.resource_config.url.clone(),
40                    Method::POST,
41                );
42                RequestHandler::new(self.client.clone(), rc, Some(err), None)
43            }
44        }
45    }
46}