1use super::input_request::*;
2use cyfs_base::*;
3
4use serde_json::{Map, Value};
5
6impl JsonCodec<CryptoInputRequestCommon> for CryptoInputRequestCommon {
7 fn encode_json(&self) -> Map<String, Value> {
8 let mut obj = Map::new();
9
10 JsonCodecHelper::encode_option_string_field(&mut obj, "req_path", self.req_path.as_ref());
11 JsonCodecHelper::encode_field(&mut obj, "source", &self.source);
12 JsonCodecHelper::encode_option_string_field(&mut obj, "target", self.target.as_ref());
13 JsonCodecHelper::encode_number_field(&mut obj, "flags", self.flags);
14
15 obj
16 }
17
18 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<CryptoInputRequestCommon> {
19 Ok(Self {
20 req_path: JsonCodecHelper::decode_option_string_field(obj, "req_path")?,
21 source: JsonCodecHelper::decode_field(obj, "source")?,
22 target: JsonCodecHelper::decode_option_string_field(obj, "target")?,
23 flags: JsonCodecHelper::decode_int_field(obj, "flags")?,
24 })
25 }
26}
27
28impl JsonCodec<CryptoSignObjectInputRequest> for CryptoSignObjectInputRequest {
30 fn encode_json(&self) -> Map<String, Value> {
31 let mut obj = Map::new();
32
33 JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
34 JsonCodecHelper::encode_field(&mut obj, "object", &self.object);
35 JsonCodecHelper::encode_number_field(&mut obj, "flags", self.flags);
36
37 obj
38 }
39
40 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<CryptoSignObjectInputRequest> {
41 Ok(Self {
42 common: JsonCodecHelper::decode_field(obj, "common")?,
43 object: JsonCodecHelper::decode_field(obj, "object")?,
44 flags: JsonCodecHelper::decode_int_field(obj, "flags")?,
45 })
46 }
47}
48
49impl JsonCodec<CryptoSignObjectInputResponse> for CryptoSignObjectInputResponse {
50 fn encode_json(&self) -> Map<String, Value> {
51 let mut obj = Map::new();
52
53 JsonCodecHelper::encode_string_field(&mut obj, "result", &self.result);
54 JsonCodecHelper::encode_option_field(&mut obj, "object", self.object.as_ref());
55
56 obj
57 }
58
59 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<CryptoSignObjectInputResponse> {
60 Ok(Self {
61 result: JsonCodecHelper::decode_string_field(obj, "result")?,
62 object: JsonCodecHelper::decode_option_field(obj, "object")?,
63 })
64 }
65}
66
67impl JsonCodec<CryptoVerifyObjectInputRequest> for CryptoVerifyObjectInputRequest {
69 fn encode_json(&self) -> Map<String, Value> {
70 let mut obj = Map::new();
71
72 JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
73
74 JsonCodecHelper::encode_string_field(&mut obj, "sign_type", &self.sign_type);
75
76 JsonCodecHelper::encode_field(&mut obj, "object", &self.object);
77
78 JsonCodecHelper::encode_field(&mut obj, "sign_object", &self.sign_object);
79
80 obj
81 }
82
83 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<CryptoVerifyObjectInputRequest> {
84 Ok(Self {
85 common: JsonCodecHelper::decode_field(obj, "common")?,
86 sign_type: JsonCodecHelper::decode_string_field(obj, "sign_type")?,
87 object: JsonCodecHelper::decode_field(obj, "object")?,
88 sign_object: JsonCodecHelper::decode_field(obj, "sign_object")?,
89 })
90 }
91}
92
93impl JsonCodec<Self> for CryptoEncryptDataInputRequest {
95 fn encode_json(&self) -> Map<String, Value> {
96 let mut obj = Map::new();
97
98 JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
99
100 JsonCodecHelper::encode_string_field(&mut obj, "encrypt_type", &self.encrypt_type);
101
102 if let Some(data) = &self.data {
103 JsonCodecHelper::encode_string_field_2(&mut obj, "data", hex::encode(data));
104 }
105
106 JsonCodecHelper::encode_number_field(&mut obj, "flags", self.flags);
107
108 obj
109 }
110
111 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
112 let s: Option<String> = JsonCodecHelper::decode_option_string_field(obj, "data")?;
113 let data = match s {
114 Some(s) => Some(hex::decode(&s).map_err(|e| {
115 let msg = format!("invalid encrypt data string: {}, {}", s, e);
116 error!("{}", msg);
117 BuckyError::new(BuckyErrorCode::InvalidFormat, msg)
118 })?),
119 None => None,
120 };
121
122 Ok(Self {
123 common: JsonCodecHelper::decode_field(obj, "common")?,
124 encrypt_type: JsonCodecHelper::decode_string_field(obj, "encrypt_type")?,
125 data,
126 flags: JsonCodecHelper::decode_int_field(obj, "flags")?,
127 })
128 }
129}
130
131impl JsonCodec<Self> for CryptoEncryptDataInputResponse {
132 fn encode_json(&self) -> Map<String, Value> {
133 let mut obj = Map::new();
134
135 JsonCodecHelper::encode_option_string_field(&mut obj, "aes_key", self.aes_key.as_ref());
136
137 JsonCodecHelper::encode_string_field_2(&mut obj, "data", hex::encode(&self.result));
138
139 obj
140 }
141
142 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
143 let s: String = JsonCodecHelper::decode_string_field(obj, "data")?;
144 let result = hex::decode(&s).map_err(|e| {
145 let msg = format!("invalid encrypt data result string: {:?}, {}", s, e);
146 error!("{}", msg);
147 BuckyError::new(BuckyErrorCode::InvalidFormat, msg)
148 })?;
149
150 Ok(Self {
151 aes_key: JsonCodecHelper::decode_option_string_field(obj, "aes_key")?,
152 result,
153 })
154 }
155}
156
157
158impl JsonCodec<Self> for CryptoDecryptDataInputRequest {
160 fn encode_json(&self) -> Map<String, Value> {
161 let mut obj = Map::new();
162
163 JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
164
165 JsonCodecHelper::encode_string_field(&mut obj, "decrypt_type", &self.decrypt_type);
166
167 JsonCodecHelper::encode_string_field_2(&mut obj, "data", hex::encode(&self.data));
168
169 JsonCodecHelper::encode_number_field(&mut obj, "flags", self.flags);
170
171 obj
172 }
173
174 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
175 let s: String = JsonCodecHelper::decode_string_field(obj, "data")?;
176 let data = hex::decode(&s).map_err(|e| {
177 let msg = format!("invalid encrypt data string: {}, {}", s, e);
178 error!("{}", msg);
179 BuckyError::new(BuckyErrorCode::InvalidFormat, msg)
180 })?;
181
182 Ok(Self {
183 common: JsonCodecHelper::decode_field(obj, "common")?,
184 decrypt_type: JsonCodecHelper::decode_string_field(obj, "decrypt_type")?,
185 data,
186 flags: JsonCodecHelper::decode_int_field(obj, "flags")?,
187 })
188 }
189}
190
191impl JsonCodec<Self> for CryptoDecryptDataInputResponse {
192 fn encode_json(&self) -> Map<String, Value> {
193 let mut obj = Map::new();
194
195 JsonCodecHelper::encode_string_field(&mut obj, "result", &self.result);
196 JsonCodecHelper::encode_string_field_2(&mut obj, "data", hex::encode(&self.data));
197
198 obj
199 }
200
201 fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
202 let s: String = JsonCodecHelper::decode_string_field(obj, "data")?;
203 let data = hex::decode(&s).map_err(|e| {
204 let msg = format!("invalid decrypt data result string: {}, {}", s, e);
205 error!("{}", msg);
206 BuckyError::new(BuckyErrorCode::InvalidFormat, msg)
207 })?;
208
209 Ok(Self {
210 result: JsonCodecHelper::decode_string_field(obj, "result")?,
211 data,
212 })
213 }
214}