use bytes::Bytes;
use std::{collections::HashMap, fmt::Display};
#[derive(Debug, Clone)]
pub enum Blob {
Directory(Directory),
File(File),
}
#[derive(Debug, Clone)]
pub struct File {
pub last_modified_at: Option<u128>,
pub content_type: Option<String>,
pub created_at: Option<u128>,
pub metadata: HashMap<String, String>,
pub is_symlink: bool,
pub data: Bytes,
pub name: String,
pub path: String,
pub size: usize,
}
impl Display for File {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "file [{}] ({} bytes)", self.path, self.size)?;
if let Some(ref ct) = self.content_type {
write!(f, " | {ct}")?;
}
Ok(())
}
}
#[derive(Debug, Clone)]
pub struct Directory {
pub created_at: Option<u128>,
pub name: String,
pub path: String,
}
impl Display for Directory {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "directory {}", self.path)
}
}