cyfs_lib/events/ws/
request.rs

1use super::super::*;
2use crate::router_handler::*;
3use cyfs_base::*;
4
5use serde_json::{Map, Value};
6
7
8
9#[derive(Debug)]
10pub struct RouterWSAddEventParam {
11    pub category: RouterEventCategory,
12    pub id: String,
13    pub dec_id: Option<ObjectId>,
14    pub index: i32,
15    pub routine: String,
16}
17
18pub struct RouterWSRemoveEventParam {
19    pub category: RouterEventCategory,
20    pub id: String,
21    pub dec_id: Option<ObjectId>,
22}
23
24impl JsonCodec<Self> for RouterWSAddEventParam {
25    fn encode_json(&self) -> Map<String, Value> {
26        let mut obj = Map::new();
27
28        JsonCodecHelper::encode_string_field(&mut obj, "category", &self.category);
29        JsonCodecHelper::encode_string_field(&mut obj, "id", &self.id);
30        JsonCodecHelper::encode_option_string_field(&mut obj, "dec_id", self.dec_id.as_ref());
31        JsonCodecHelper::encode_string_field(&mut obj, "index", &self.index);
32        JsonCodecHelper::encode_string_field(&mut obj, "routine", &self.routine);
33
34        obj
35    }
36
37    fn decode_json(req_obj: &Map<String, Value>) -> BuckyResult<Self> {
38        Ok(Self {
39            category: JsonCodecHelper::decode_string_field(req_obj, "category")?,
40            id: JsonCodecHelper::decode_string_field(req_obj, "id")?,
41            dec_id: JsonCodecHelper::decode_option_string_field(req_obj, "dec_id")?,
42            index: JsonCodecHelper::decode_string_field(req_obj, "index")?,
43            routine: JsonCodecHelper::decode_string_field(req_obj, "routine")?,
44        })
45    }
46}
47
48impl JsonCodec<Self> for RouterWSRemoveEventParam {
49    fn encode_json(&self) -> Map<String, Value> {
50        let mut obj = Map::new();
51
52        JsonCodecHelper::encode_string_field(&mut obj, "category", &self.category);
53        JsonCodecHelper::encode_string_field(&mut obj, "id", &self.id);
54        JsonCodecHelper::encode_option_string_field(&mut obj, "dec_id", self.dec_id.as_ref());
55
56        obj
57    }
58
59    fn decode_json(req_obj: &Map<String, Value>) -> BuckyResult<Self> {
60        Ok(Self {
61            category: JsonCodecHelper::decode_string_field(req_obj, "category")?,
62            id: JsonCodecHelper::decode_string_field(req_obj, "id")?,
63            dec_id: JsonCodecHelper::decode_option_string_field(req_obj, "dec_id")?,
64        })
65    }
66}
67
68pub type RouterWSEventResponse = RouterWSHandlerResponse;
69
70pub struct RouterWSEventEmitParam {
71    pub category: RouterEventCategory,
72
73    pub id: String,
74
75    pub param: String,
76}
77
78impl RouterWSEventEmitParam {
79    pub fn encode_json_impl<P>(
80        category: &RouterEventCategory,
81        id: &str,
82        param: &P,
83    ) -> Map<String, Value>
84    where
85        P: JsonCodec<P>,
86    {
87        let mut obj = Map::new();
88
89        JsonCodecHelper::encode_string_field(&mut obj, "category", &category);
90        JsonCodecHelper::encode_string_field(&mut obj, "id", &id);
91        obj.insert("param".to_string(), Value::String(param.encode_string()));
92
93        obj
94    }
95}
96
97impl JsonCodec<Self> for RouterWSEventEmitParam {
98    fn encode_json(&self) -> Map<String, Value> {
99        let mut obj = Map::new();
100
101        JsonCodecHelper::encode_string_field(&mut obj, "category", &self.category);
102        JsonCodecHelper::encode_string_field(&mut obj, "id", &self.id);
103        JsonCodecHelper::encode_string_field(&mut obj, "param", &self.param);
104
105        obj
106    }
107
108    fn decode_json(req_obj: &Map<String, Value>) -> BuckyResult<Self> {
109        Ok(Self {
110            category: JsonCodecHelper::decode_string_field(req_obj, "category")?,
111            id: JsonCodecHelper::decode_string_field(req_obj, "id")?,
112            param: JsonCodecHelper::decode_string_field(req_obj, "param")?,
113        })
114    }
115}