Skip to main content

xnode_manager_sdk/file/
models.rs

1use serde::{Deserialize, Serialize};
2
3use crate::utils::Output;
4
5#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
6pub struct ReadFile {
7    pub path: String,
8}
9
10#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
11pub struct WriteFile {
12    pub path: String,
13    pub content: Vec<u8>,
14}
15
16#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
17pub struct RemoveFile {
18    pub path: String,
19}
20
21#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
22pub struct ReadDirectory {
23    pub path: String,
24}
25
26#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
27pub struct CreateDirectory {
28    pub path: String,
29    pub make_parent: bool,
30}
31
32#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
33pub struct RemoveDirectory {
34    pub path: String,
35    pub make_empty: bool,
36}
37
38#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
39pub struct GetPermissions {
40    pub path: String,
41}
42
43#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
44pub struct SetPermissions {
45    pub path: String,
46    pub permissions: Vec<Permission>,
47}
48
49#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
50pub struct File {
51    pub content: Output,
52}
53
54#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
55pub struct Directory {
56    pub directories: Vec<String>,
57    pub files: Vec<String>,
58    pub symlinks: Vec<String>,
59    pub unknown: Vec<String>,
60}
61
62#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
63pub enum Entity {
64    User(u32),
65    Group(u32),
66    Any,
67    Unknown,
68}
69
70#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
71pub struct Permission {
72    pub granted_to: Entity,
73    pub read: bool,
74    pub write: bool,
75    pub execute: bool,
76}