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