busylib 0.0.1

BUSY Bar Rust HTTP client
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum StorageEntry {
    File { name: String, size: u64 },
    Dir { name: String },
}

impl StorageEntry {
    pub fn name(&self) -> &str {
        match self {
            StorageEntry::File { name, .. } | StorageEntry::Dir { name } => name,
        }
    }

    pub fn size(&self) -> Option<u64> {
        match self {
            StorageEntry::File { size, .. } => Some(*size),
            StorageEntry::Dir { .. } => None,
        }
    }

    pub fn is_dir(&self) -> bool {
        matches!(self, StorageEntry::Dir { .. })
    }
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StorageStatus {
    pub used_bytes: Option<u64>,
    pub free_bytes: Option<u64>,
    pub total_bytes: Option<u64>,
}

#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
pub(crate) struct StorageListResponse {
    pub list: Vec<StorageEntry>,
}