Skip to main content

hinge_rs/client/
raw.rs

1use super::HingeClient;
2use crate::errors::HingeError;
3use crate::logging::log_request;
4use crate::storage::Storage;
5
6impl<S: Storage + Clone> HingeClient<S> {
7    pub async fn raw_hinge_json(
8        &self,
9        method: reqwest::Method,
10        path_or_url: &str,
11        body: Option<serde_json::Value>,
12    ) -> Result<serde_json::Value, HingeError> {
13        let url = if path_or_url.starts_with("http://") || path_or_url.starts_with("https://") {
14            path_or_url.to_string()
15        } else {
16            format!(
17                "{}/{}",
18                self.settings.base_url.trim_end_matches('/'),
19                path_or_url.trim_start_matches('/')
20            )
21        };
22        let headers = self.default_headers()?;
23        log_request(method.as_str(), &url, &headers, body.as_ref());
24        let mut request = self.http.request(method, &url).headers(headers);
25        if let Some(body) = body {
26            request = request.json(&body);
27        }
28        let res = request.send().await?;
29        self.parse_response(res).await
30    }
31
32    pub async fn raw_sendbird_json(
33        &self,
34        method: reqwest::Method,
35        path_or_url: &str,
36        body: Option<serde_json::Value>,
37    ) -> Result<serde_json::Value, HingeError> {
38        let url = if path_or_url.starts_with("http://") || path_or_url.starts_with("https://") {
39            path_or_url.to_string()
40        } else {
41            format!(
42                "{}/v3/{}",
43                self.settings.sendbird_api_url.trim_end_matches('/'),
44                path_or_url.trim_start_matches('/')
45            )
46        };
47        let mut headers = self.sendbird_headers()?;
48        if body.is_some() {
49            headers.insert(
50                reqwest::header::CONTENT_TYPE,
51                reqwest::header::HeaderValue::from_static("application/json"),
52            );
53        }
54        log_request(method.as_str(), &url, &headers, body.as_ref());
55        let mut request = self.http.request(method, &url).headers(headers);
56        if let Some(body) = body {
57            request = request.json(&body);
58        }
59        let res = request.send().await?;
60        self.parse_response(res).await
61    }
62}