cyfs_lib/acl/handler/
request_codec.rs1use super::super::AclAction;
2use super::request::*;
3use cyfs_base::*;
4
5use serde_json::{Map, Value};
6
7impl JsonCodec<AclAction> for AclAction {
8 fn encode_json(&self) -> Map<String, Value> {
9 let mut obj = Map::new();
10 JsonCodecHelper::encode_string_field(&mut obj, "direction", &self.direction);
11 JsonCodecHelper::encode_string_field(&mut obj, "operation", &self.operation);
12
13 obj
14 }
15
16 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
17 Ok(Self {
18 direction: JsonCodecHelper::decode_string_field(obj, "direction")?,
19 operation: JsonCodecHelper::decode_string_field(obj, "operation")?,
20 })
21 }
22}
23
24impl JsonCodec<AclHandlerRequest> for AclHandlerRequest {
25 fn encode_json(&self) -> Map<String, Value> {
26 let mut obj = Map::new();
27
28 JsonCodecHelper::encode_string_field(&mut obj, "protocol", &self.protocol);
29 JsonCodecHelper::encode_field(&mut obj, "action", &self.action);
30
31 JsonCodecHelper::encode_string_field(&mut obj, "device_id", &self.device_id);
32
33 JsonCodecHelper::encode_option_field(&mut obj, "object", self.object.as_ref());
34
35 JsonCodecHelper::encode_option_string_field(
36 &mut obj,
37 "inner_path",
38 self.inner_path.as_ref(),
39 );
40
41 JsonCodecHelper::encode_option_string_field(&mut obj, "req_path", self.req_path.as_ref());
42 JsonCodecHelper::encode_string_field(&mut obj, "dec_id", &self.dec_id);
43 JsonCodecHelper::encode_option_str_array_field(&mut obj, "referer_object", self.referer_object.as_ref());
44
45 obj
46 }
47
48 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
49 Ok(Self {
50 protocol: JsonCodecHelper::decode_string_field(obj, "protocol")?,
51 action: JsonCodecHelper::decode_field(obj, "action")?,
52 device_id: JsonCodecHelper::decode_string_field(obj, "device_id")?,
53
54 object: JsonCodecHelper::decode_option_field(obj, "object")?,
55 inner_path: JsonCodecHelper::decode_option_string_field(obj, "inner_path")?,
56
57 req_path: JsonCodecHelper::decode_option_string_field(obj, "req_path")?,
58 dec_id: JsonCodecHelper::decode_string_field(obj, "dec_id")?,
59 referer_object: JsonCodecHelper::decode_option_str_array_field(obj, "referer_object")?,
60 })
61 }
62}
63
64
65impl JsonCodec<AclHandlerResponse> for AclHandlerResponse {
66 fn encode_json(&self) -> Map<String, Value> {
67 let mut obj = Map::new();
68 JsonCodecHelper::encode_string_field(&mut obj, "access", &self.access);
69
70 obj
71 }
72
73 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
74 Ok(Self {
75 access: JsonCodecHelper::decode_string_field(obj, "access")?,
76 })
77 }
78}