zabbix_api/
error.rs

1use std::fmt::{Display, Formatter};
2
3use serde::de::StdError;
4use serde::Deserialize;
5use thiserror::Error;
6
7#[derive(Error, Debug)]
8pub enum ZabbixApiError {
9    #[error("network error")]
10    NetworkError(#[from] reqwest::Error),
11
12    #[error("unsupported zabbix api")]
13    UnsupportedApiError(#[from] serde_json::Error),
14
15    #[error("zabbix api call error")]
16    ApiCallError {
17        #[source]
18        zabbix: ZabbixError,
19    },
20
21    #[error("zabbix api bad request error")]
22    BadRequestError,
23
24    #[error("zabbix api error")]
25    Error,
26}
27
28#[derive(Deserialize, Debug)]
29pub struct ZabbixError {
30    pub code: i32,
31    pub message: String,
32    pub data: String,
33}
34
35impl Display for ZabbixError {
36    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
37        write!(
38            f,
39            "[zabbix error] code {}, message '{}', data: '{}' [/zabbix error]",
40            self.code, self.message, self.data
41        )
42    }
43}
44
45impl StdError for ZabbixError {}