use serde::{Deserialize, Serialize};
pub const FS_CHUNK_SIZE: usize = 3 * 1024 * 1024;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FsOp {
Stat {
path: String,
},
List {
path: String,
},
Read {
path: String,
},
Write {
path: String,
#[serde(default)]
mode: Option<u32>,
},
Mkdir {
path: String,
},
Remove {
path: String,
},
RemoveDir {
path: String,
},
Copy {
src: String,
dst: String,
},
Rename {
src: String,
dst: String,
},
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FsRequest {
pub op: FsOp,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FsEntryInfo {
pub path: String,
pub kind: String,
pub size: u64,
pub mode: u32,
pub modified: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FsResponseData {
Stat(FsEntryInfo),
List(Vec<FsEntryInfo>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FsResponse {
pub ok: bool,
#[serde(default)]
pub error: Option<String>,
#[serde(default)]
pub data: Option<FsResponseData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct FsData {
#[serde(with = "serde_bytes")]
pub data: Vec<u8>,
}