synd_client/client/
daemon.rs1use 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}