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!(f, "[zabbix error] code {}, message '{}', data: '{}' [/zabbix error]", self.code, self.message, self.data)
38 }
39}
40
41impl StdError for ZabbixError {
42
43}