zabbix_api/trigger/
model.rs1use serde::{Deserialize, Serialize};
2use serde_with::serde_as;
3use serde_with::DisplayFromStr;
4
5#[serde_as]
7#[derive(Deserialize, Clone, Debug)]
8pub struct ZabbixTrigger {
9 #[serde(alias = "triggerid")]
11 pub trigger_id: String,
12
13 pub event_name: String,
15
16 pub url: String,
18
19 pub description: String,
21
22 pub expression: String,
24
25 #[serde_as(as = "DisplayFromStr")]
41 pub priority: u8,
42
43 #[serde_as(as = "DisplayFromStr")]
53 pub recovery_mode: u8,
54
55 pub recovery_expression: String,
57}
58
59#[derive(Serialize, Deserialize, Clone, Debug)]
61pub struct ZabbixTriggerTag {
62 pub tag: String,
63 pub value: String,
64}
65
66#[cfg(test)]
67mod trigger_tests {
68 use super::ZabbixTrigger;
69
70 #[test]
71 fn deserialize_test() {
72 let input = r#"
73 {"triggerid":"24099","expression":"{34519}>=1","description":"Site 'example.com' is unavailable","url":"https://example.com","status":"0","value":"0","priority":"4","lastchange":"0","comments":"","error":"","templateid":"0","type":"0","state":"0","flags":"0","recovery_mode":"1","recovery_expression":"{34520}=0","correlation_mode":"0","correlation_tag":"","manual_close":"0","opdata":"","event_name":"example.com is down","uuid":"","url_name":"","functions":[{"functionid":"34519","itemid":"48175","triggerid":"24099","parameter":"$,#3","function":"avg"},{"functionid":"34520","itemid":"48175","triggerid":"24099","parameter":"$","function":"last"}]}
74 "#;
75
76 let result: ZabbixTrigger = serde_json::from_str(&input).unwrap();
77
78 assert_eq!(result.priority, 4);
79 assert_eq!(result.recovery_mode, 1);
80 }
81}