Skip to main content

synd_client/client/
daemon.rs

1use synd_protocol::daemon::DaemonStatusResponse;
2use synd_support::o11y::health_check::Health;
3
4use super::Client;
5use crate::SyndApiError;
6
7const HEALTH_CHECK_PATH: &str = "/health";
8const DAEMON_STATUS_PATH: &str = synd_protocol::daemon::STATUS_PATH;
9const DAEMON_SHUTDOWN_PATH: &str = "/daemon/shutdown";
10
11impl Client {
12    pub async fn health(&self) -> Result<Health, SyndApiError> {
13        self.client
14            .get(self.endpoint.join(HEALTH_CHECK_PATH)?)
15            .send()
16            .await
17            .map_err(SyndApiError::from_send_error)?
18            .error_for_status()
19            .map_err(SyndApiError::from_status_error)?
20            .json()
21            .await
22            .map_err(SyndApiError::DecodeResponse)
23    }
24
25    pub async fn shutdown_daemon(&self) -> Result<(), SyndApiError> {
26        self.client
27            .post(self.endpoint.join(DAEMON_SHUTDOWN_PATH)?)
28            .send()
29            .await
30            .map_err(SyndApiError::from_send_error)?
31            .error_for_status()
32            .map_err(SyndApiError::from_status_error)?;
33
34        Ok(())
35    }
36
37    pub async fn daemon_status(&self) -> Result<DaemonStatusResponse, SyndApiError> {
38        self.client
39            .get(self.endpoint.join(DAEMON_STATUS_PATH)?)
40            .send()
41            .await
42            .map_err(SyndApiError::from_send_error)?
43            .error_for_status()
44            .map_err(SyndApiError::from_status_error)?
45            .json()
46            .await
47            .map_err(SyndApiError::DecodeResponse)
48    }
49}