blazehash 0.2.5

Forensic file hasher — hashdeep for the modern era, BLAKE3 by default
Documentation
use serde_json::Value;

#[derive(Debug, PartialEq)]
pub enum VtResult {
    Clean(u64),
    Malicious { count: u64, total: u64 },
    Unknown,
}

pub fn classify_vt_response(json: &Value) -> VtResult {
    match json.pointer("/data/attributes/last_analysis_stats") {
        None => VtResult::Unknown,
        Some(s) => {
            let malicious = s["malicious"].as_u64().unwrap_or(0);
            let undetected = s["undetected"].as_u64().unwrap_or(0);
            let suspicious = s["suspicious"].as_u64().unwrap_or(0);
            let harmless = s["harmless"].as_u64().unwrap_or(0);
            let total = malicious + undetected + suspicious + harmless;
            if malicious > 0 {
                VtResult::Malicious { count: malicious, total }
            } else {
                VtResult::Clean(total)
            }
        }
    }
}