cyfs_lib/events/ws/
request.rs1use 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}