eck 0.0.3

A fast, simple file & folder encryption manager, written in Rust
use postcard::from_bytes;
use std::{fs::metadata, path::Path};

use crate::{metadatas::FolderMetadata, treatment::inspect::InspectionReport};

pub fn inspect_encrypted_archive(path: &str, meta: &[u8], version: u8) -> InspectionReport {
    let pathstd = Path::new(path);

    let metadata = match metadata(path) {
        Ok(m) => Some(m),
        Err(e) => {
            tracing::warn!("{}", e);
            None
        }
    };

    let folder_meta: Option<FolderMetadata> = match from_bytes(meta) {
        Ok(fm) => Some(fm),
        Err(e) => {
            tracing::warn!("{}", e);
            None
        }
    };

    let name = pathstd.file_name().map(|p| p.to_string_lossy().to_string());

    let directory = pathstd.parent().map(|p| p.to_string_lossy().to_string());

    let size = metadata.map(|m| m.len());

    let mut entries_number = None;
    let mut keytype = None;

    if let Some(meta) = folder_meta {
        entries_number = Some(meta.entries.len() as u64);
        keytype = Some(meta.key_type)
    }

    InspectionReport::EncryptedArchive {
        name,
        directory,
        size,
        version,
        entries_number,
        keytype,
    }
}