cyfs_lib/root_state/
output_request_codec.rs

1use super::output_request::*;
2use cyfs_base::*;
3
4use serde_json::{Map, Value};
5
6impl JsonCodec<RootStateOutputRequestCommon> for RootStateOutputRequestCommon {
7    fn encode_json(&self) -> Map<String, Value> {
8        let mut obj = Map::new();
9
10        JsonCodecHelper::encode_option_string_field(&mut obj, "dec_id", self.dec_id.as_ref());
11        JsonCodecHelper::encode_option_string_field(&mut obj, "target_dec_id", self.target_dec_id.as_ref());
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<RootStateOutputRequestCommon> {
19        Ok(Self {
20            dec_id: JsonCodecHelper::decode_option_string_field(obj, "dec_id")?,
21            target_dec_id: JsonCodecHelper::decode_option_string_field(obj, "target_dec_id")?,
22            target: JsonCodecHelper::decode_option_string_field(obj, "target")?,
23            flags: JsonCodecHelper::decode_int_field(obj, "flags")?,
24        })
25    }
26}
27
28// get_current_root
29impl JsonCodec<RootStateGetCurrentRootOutputRequest> for RootStateGetCurrentRootOutputRequest {
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_string_field(&mut obj, "root_type", &self.root_type);
35
36        obj
37    }
38
39    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<RootStateGetCurrentRootOutputRequest> {
40        Ok(Self {
41            common: JsonCodecHelper::decode_field(obj, "common")?,
42            root_type: JsonCodecHelper::decode_string_field(obj, "root_type")?,
43        })
44    }
45}
46
47impl JsonCodec<RootStateGetCurrentRootOutputResponse> for RootStateGetCurrentRootOutputResponse {
48    fn encode_json(&self) -> Map<String, Value> {
49        let mut obj = Map::new();
50
51        JsonCodecHelper::encode_string_field(&mut obj, "root", &self.root);
52        JsonCodecHelper::encode_number_field(&mut obj, "revision", self.revision);
53        JsonCodecHelper::encode_option_string_field(&mut obj, "dec_root", self.dec_root.as_ref());
54
55        obj
56    }
57
58    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<RootStateGetCurrentRootOutputResponse> {
59        Ok(Self {
60            root: JsonCodecHelper::decode_string_field(obj, "root")?,
61            revision: JsonCodecHelper::decode_int_field(obj, "revision")?,
62            dec_root: JsonCodecHelper::decode_option_string_field(obj, "dec_root")?,
63        })
64    }
65}
66
67// create_op_env
68impl JsonCodec<Self> for RootStateOpEnvAccess {
69    fn encode_json(&self) -> Map<String, Value> {
70        let mut obj = Map::new();
71
72        JsonCodecHelper::encode_string_field(&mut obj, "path", &self.path);
73        JsonCodecHelper::encode_number_field(&mut obj, "access", self.access as u8);
74
75        obj
76    }
77
78    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
79        let access: u8 = JsonCodecHelper::decode_int_field(obj, "access")?;
80        
81        Ok(Self {
82            path: JsonCodecHelper::decode_string_field(obj, "path")?,
83            access: AccessPermissions::try_from(access)?,
84        })
85    }
86}
87
88impl JsonCodec<Self> for RootStateCreateOpEnvOutputRequest {
89    fn encode_json(&self) -> Map<String, Value> {
90        let mut obj = Map::new();
91
92        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
93        JsonCodecHelper::encode_string_field(&mut obj, "op_env_type", &self.op_env_type);
94        JsonCodecHelper::encode_option_field(&mut obj, "access", self.access.as_ref());
95
96        obj
97    }
98
99    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
100        Ok(Self {
101            common: JsonCodecHelper::decode_field(obj, "common")?,
102            op_env_type: JsonCodecHelper::decode_string_field(obj, "op_env_type")?,
103            access: JsonCodecHelper::decode_option_field(obj, "access")?,
104        })
105    }
106}
107
108impl JsonCodec<RootStateCreateOpEnvOutputResponse> for RootStateCreateOpEnvOutputResponse {
109    fn encode_json(&self) -> Map<String, Value> {
110        let mut obj = Map::new();
111
112        JsonCodecHelper::encode_string_field(&mut obj, "sid", &self.sid);
113
114        obj
115    }
116
117    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<RootStateCreateOpEnvOutputResponse> {
118        Ok(Self {
119            sid: JsonCodecHelper::decode_int_field(obj, "sid")?,
120        })
121    }
122}
123
124// op_env requests
125impl JsonCodec<Self> for OpEnvOutputRequestCommon {
126    fn encode_json(&self) -> Map<String, Value> {
127        let mut obj = Map::new();
128
129        JsonCodecHelper::encode_option_string_field(&mut obj, "dec_id", self.dec_id.as_ref());
130        JsonCodecHelper::encode_option_string_field(&mut obj, "target_dec_id", self.target_dec_id.as_ref());
131        JsonCodecHelper::encode_option_string_field(&mut obj, "target", self.target.as_ref());
132        JsonCodecHelper::encode_number_field(&mut obj, "flags", self.flags);
133        JsonCodecHelper::encode_string_field(&mut obj, "sid", &self.sid);
134
135        obj
136    }
137
138    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
139        Ok(Self {
140            dec_id: JsonCodecHelper::decode_option_string_field(obj, "dec_id")?,
141            target_dec_id: JsonCodecHelper::decode_option_string_field(obj, "target_dec_id")?,
142            target: JsonCodecHelper::decode_option_string_field(obj, "target")?,
143            flags: JsonCodecHelper::decode_int_field(obj, "flags")?,
144            sid: JsonCodecHelper::decode_int_field(obj, "sid")?,
145        })
146    }
147}
148
149// load
150impl JsonCodec<Self> for OpEnvLoadOutputRequest {
151    fn encode_json(&self) -> Map<String, Value> {
152        let mut obj = Map::new();
153
154        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
155        JsonCodecHelper::encode_string_field(&mut obj, "target", &self.target);
156        JsonCodecHelper::encode_option_string_field(&mut obj, "inner_path", self.inner_path.as_ref());
157
158        obj
159    }
160
161    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
162        Ok(Self {
163            common: JsonCodecHelper::decode_field(obj, "common")?,
164            target: JsonCodecHelper::decode_string_field(obj, "target")?,
165            inner_path: JsonCodecHelper::decode_option_string_field(obj, "inner_path")?,
166        })
167    }
168}
169
170// load_by_path
171impl JsonCodec<Self> for OpEnvLoadByPathOutputRequest {
172    fn encode_json(&self) -> Map<String, Value> {
173        let mut obj = Map::new();
174
175        JsonCodecHelper::encode_string_field(&mut obj, "path", &self.path);
176        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
177
178        obj
179    }
180
181    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
182        Ok(Self {
183            path: JsonCodecHelper::decode_string_field(obj, "path")?,
184            common: JsonCodecHelper::decode_field(obj, "common")?,
185        })
186    }
187}
188
189// create_new
190impl JsonCodec<Self> for OpEnvCreateNewOutputRequest {
191    fn encode_json(&self) -> Map<String, Value> {
192        let mut obj = Map::new();
193
194        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
195        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
196        JsonCodecHelper::encode_option_string_field(&mut obj, "key", self.key.as_ref());
197        JsonCodecHelper::encode_string_field(&mut obj, "content_type", &self.content_type);
198        JsonCodecHelper::encode_option_string_field(&mut obj, "owner", self.owner.as_ref());
199        JsonCodecHelper::encode_option_string_field(&mut obj, "dec", self.dec.as_ref());
200
201        obj
202    }
203
204    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
205        Ok(Self {
206            common: JsonCodecHelper::decode_field(obj, "common")?,
207            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
208            key: JsonCodecHelper::decode_option_string_field(obj, "key")?,
209            content_type: JsonCodecHelper::decode_string_field(obj, "content_type")?,
210            owner: JsonCodecHelper::decode_option_string_field(obj, "owner")?,
211            dec: JsonCodecHelper::decode_option_string_field(obj, "dec")?,
212        })
213    }
214}
215
216// lock
217impl JsonCodec<Self> for OpEnvLockOutputRequest {
218    fn encode_json(&self) -> Map<String, Value> {
219        let mut obj = Map::new();
220
221        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
222        JsonCodecHelper::encode_str_array_field(&mut obj, "path_list", &self.path_list);
223        JsonCodecHelper::encode_number_field(
224            &mut obj,
225            "duration_in_millsecs",
226            self.duration_in_millsecs,
227        );
228        JsonCodecHelper::encode_bool_field(
229            &mut obj,
230            "try_lock",
231            self.try_lock,
232        );
233
234        obj
235    }
236
237    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
238        Ok(Self {
239            common: JsonCodecHelper::decode_field(obj, "common")?,
240            path_list: JsonCodecHelper::decode_str_array_field(obj, "path_list")?,
241            duration_in_millsecs: JsonCodecHelper::decode_int_field(obj, "duration_in_millsecs")?,
242            try_lock: JsonCodecHelper::decode_bool_field(obj, "try_lock")?,
243        })
244    }
245}
246
247// commit
248impl JsonCodec<Self> for OpEnvCommitOutputRequest {
249    fn encode_json(&self) -> Map<String, Value> {
250        let mut obj = Map::new();
251
252        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
253        JsonCodecHelper::encode_option_string_field(&mut obj, "op_type", self.op_type.as_ref());
254
255        obj
256    }
257
258    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
259        Ok(Self {
260            common: JsonCodecHelper::decode_field(obj, "common")?,
261            op_type: JsonCodecHelper::decode_option_string_field(obj, "op_type")?,
262        })
263    }
264}
265impl JsonCodec<Self> for OpEnvCommitOutputResponse {
266    fn encode_json(&self) -> Map<String, Value> {
267        let mut obj = Map::new();
268
269        JsonCodecHelper::encode_string_field(&mut obj, "root", &self.root);
270        JsonCodecHelper::encode_string_field(&mut obj, "dec_root", &self.dec_root);
271        JsonCodecHelper::encode_number_field(&mut obj, "revision", self.revision);
272
273        obj
274    }
275
276    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
277        Ok(Self {
278            root: JsonCodecHelper::decode_string_field(obj, "root")?,
279            dec_root: JsonCodecHelper::decode_string_field(obj, "dec_root")?,
280            revision: JsonCodecHelper::decode_int_field(obj, "revision")?,
281        })
282    }
283}
284
285// abort
286impl JsonCodec<Self> for OpEnvAbortOutputRequest {
287    fn encode_json(&self) -> Map<String, Value> {
288        let mut obj = Map::new();
289
290        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
291
292        obj
293    }
294
295    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
296        Ok(Self {
297            common: JsonCodecHelper::decode_field(obj, "common")?,
298        })
299    }
300}
301
302// metadata
303impl JsonCodec<Self> for OpEnvMetadataOutputRequest {
304    fn encode_json(&self) -> Map<String, Value> {
305        let mut obj = Map::new();
306
307        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
308        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
309        obj
310    }
311
312    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
313        Ok(Self {
314            common: JsonCodecHelper::decode_field(obj, "common")?,
315            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
316        })
317    }
318}
319impl JsonCodec<Self> for OpEnvMetadataOutputResponse {
320    fn encode_json(&self) -> Map<String, Value> {
321        let mut obj = Map::new();
322
323        JsonCodecHelper::encode_string_field(&mut obj, "content_mode", &self.content_mode);
324        JsonCodecHelper::encode_string_field(&mut obj, "content_type", &self.content_type);
325        JsonCodecHelper::encode_string_field(&mut obj, "count", &self.count);
326        JsonCodecHelper::encode_string_field(&mut obj, "size", &self.size);
327        JsonCodecHelper::encode_string_field(&mut obj, "depth", &self.depth);
328
329        obj
330    }
331
332    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
333        Ok(Self {
334            content_mode: JsonCodecHelper::decode_string_field(obj, "content_mode")?,
335            content_type: JsonCodecHelper::decode_string_field(obj, "content_type")?,
336            count: JsonCodecHelper::decode_int_field(obj, "count")?,
337            size: JsonCodecHelper::decode_int_field(obj, "size")?,
338            depth: JsonCodecHelper::decode_int_field(obj, "depth")?,
339        })
340    }
341}
342
343// get_by_key
344impl JsonCodec<Self> for OpEnvGetByKeyOutputRequest {
345    fn encode_json(&self) -> Map<String, Value> {
346        let mut obj = Map::new();
347
348        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
349        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
350        JsonCodecHelper::encode_string_field(&mut obj, "key", &self.key);
351
352        obj
353    }
354
355    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
356        Ok(Self {
357            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
358            common: JsonCodecHelper::decode_field(obj, "common")?,
359            key: JsonCodecHelper::decode_string_field(obj, "key")?,
360        })
361    }
362}
363
364impl JsonCodec<OpEnvGetByKeyOutputResponse> for OpEnvGetByKeyOutputResponse {
365    fn encode_json(&self) -> Map<String, Value> {
366        let mut obj = Map::new();
367
368        JsonCodecHelper::encode_option_string_field(&mut obj, "value", self.value.as_ref());
369
370        obj
371    }
372
373    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<OpEnvGetByKeyOutputResponse> {
374        Ok(Self {
375            value: JsonCodecHelper::decode_option_string_field(obj, "value")?,
376        })
377    }
378}
379
380// insert_with_key
381impl JsonCodec<Self> for OpEnvInsertWithKeyOutputRequest {
382    fn encode_json(&self) -> Map<String, Value> {
383        let mut obj = Map::new();
384
385        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
386        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
387        JsonCodecHelper::encode_string_field(&mut obj, "key", &self.key);
388        JsonCodecHelper::encode_string_field(&mut obj, "value", &self.value);
389
390        obj
391    }
392
393    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
394        Ok(Self {
395            common: JsonCodecHelper::decode_field(obj, "common")?,
396            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
397            key: JsonCodecHelper::decode_string_field(obj, "key")?,
398            value: JsonCodecHelper::decode_string_field(obj, "value")?,
399        })
400    }
401}
402
403// set_with_key
404impl JsonCodec<Self> for OpEnvSetWithKeyOutputRequest {
405    fn encode_json(&self) -> Map<String, Value> {
406        let mut obj = Map::new();
407
408        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
409        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
410        JsonCodecHelper::encode_string_field(&mut obj, "key", &self.key);
411        JsonCodecHelper::encode_string_field(&mut obj, "value", &self.value);
412        JsonCodecHelper::encode_option_string_field(
413            &mut obj,
414            "prev_value",
415            self.prev_value.as_ref(),
416        );
417        JsonCodecHelper::encode_bool_field(&mut obj, "auto_insert", self.auto_insert);
418
419        obj
420    }
421
422    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
423        Ok(Self {
424            common: JsonCodecHelper::decode_field(obj, "common")?,
425            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
426            key: JsonCodecHelper::decode_string_field(obj, "key")?,
427            value: JsonCodecHelper::decode_string_field(obj, "value")?,
428            prev_value: JsonCodecHelper::decode_option_string_field(obj, "prev_value")?,
429            auto_insert: JsonCodecHelper::decode_bool_field(obj, "auto_insert")?,
430        })
431    }
432}
433
434impl JsonCodec<OpEnvSetWithKeyOutputResponse> for OpEnvSetWithKeyOutputResponse {
435    fn encode_json(&self) -> Map<String, Value> {
436        let mut obj = Map::new();
437
438        JsonCodecHelper::encode_option_string_field(
439            &mut obj,
440            "prev_value",
441            self.prev_value.as_ref(),
442        );
443
444        obj
445    }
446
447    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<OpEnvSetWithKeyOutputResponse> {
448        Ok(Self {
449            prev_value: JsonCodecHelper::decode_option_string_field(obj, "prev_value")?,
450        })
451    }
452}
453
454// remove_with_key
455impl JsonCodec<Self> for OpEnvRemoveWithKeyOutputRequest {
456    fn encode_json(&self) -> Map<String, Value> {
457        let mut obj = Map::new();
458
459        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
460        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
461        JsonCodecHelper::encode_string_field(&mut obj, "key", &self.key);
462        JsonCodecHelper::encode_option_string_field(
463            &mut obj,
464            "prev_value",
465            self.prev_value.as_ref(),
466        );
467
468        obj
469    }
470
471    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
472        Ok(Self {
473            common: JsonCodecHelper::decode_field(obj, "common")?,
474            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
475            key: JsonCodecHelper::decode_string_field(obj, "key")?,
476            prev_value: JsonCodecHelper::decode_option_string_field(obj, "prev_value")?,
477        })
478    }
479}
480
481impl JsonCodec<OpEnvRemoveWithKeyOutputResponse> for OpEnvRemoveWithKeyOutputResponse {
482    fn encode_json(&self) -> Map<String, Value> {
483        let mut obj = Map::new();
484
485        JsonCodecHelper::encode_option_string_field(&mut obj, "value", self.value.as_ref());
486
487        obj
488    }
489
490    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<OpEnvRemoveWithKeyOutputResponse> {
491        Ok(Self {
492            value: JsonCodecHelper::decode_option_string_field(obj, "value")?,
493        })
494    }
495}
496
497// set requests
498impl JsonCodec<Self> for OpEnvSetOutputRequest {
499    fn encode_json(&self) -> Map<String, Value> {
500        let mut obj = Map::new();
501
502        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
503        JsonCodecHelper::encode_option_string_field(&mut obj, "path", self.path.as_ref());
504        JsonCodecHelper::encode_string_field(&mut obj, "value", &self.value);
505
506        obj
507    }
508
509    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
510        Ok(Self {
511            common: JsonCodecHelper::decode_field(obj, "common")?,
512            path: JsonCodecHelper::decode_option_string_field(obj, "path")?,
513            value: JsonCodecHelper::decode_string_field(obj, "value")?,
514        })
515    }
516}
517
518impl JsonCodec<OpEnvSetOutputResponse> for OpEnvSetOutputResponse {
519    fn encode_json(&self) -> Map<String, Value> {
520        let mut obj = Map::new();
521
522        obj.insert("result".to_owned(), Value::Bool(self.result));
523
524        obj
525    }
526
527    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<OpEnvSetOutputResponse> {
528        Ok(Self {
529            result: JsonCodecHelper::decode_bool_field(obj, "result")?,
530        })
531    }
532}
533
534// next
535impl JsonCodec<Self> for OpEnvNextOutputRequest {
536    fn encode_json(&self) -> Map<String, Value> {
537        let mut obj = Map::new();
538
539        JsonCodecHelper::encode_field(&mut obj, "common", &self.common);
540        JsonCodecHelper::encode_number_field(&mut obj, "step", self.step);
541
542        obj
543    }
544
545    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
546        Ok(Self {
547            common: JsonCodecHelper::decode_field(obj, "common")?,
548            step: JsonCodecHelper::decode_int_field(obj, "step")?,
549        })
550    }
551}
552
553
554impl JsonCodec<OpEnvNextOutputResponse> for OpEnvNextOutputResponse {
555    fn encode_json(&self) -> Map<String, Value> {
556        let mut obj = Map::new();
557
558        JsonCodecHelper::encode_as_list(&mut obj, "result", &self.list);
559
560        obj
561    }
562
563    fn decode_json(obj: &Map<String, Value>) -> BuckyResult<Self> {
564        Ok(Self {
565            list: JsonCodecHelper::decode_array_field(obj, "result")?,
566        })
567    }
568}