Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

server/index-rows/src/wheel.rs

//! A wheel's core metadata (PEP 658/714), read out of the zip (moved here from server-lib's
//! `IntakeChain::core_metadata`, lane HOL-PERF-2): the scan worker reads it at intake and
//! answers it as an [`crate::IndexRow::Wheel`]; the simple index serves it from the row.

/// **The `<name>-<version>.dist-info/METADATA` member of the wheel `file_name`**, with its
/// sha256: `Ok(None)` when the wheel has no such member. The read is one bounded member
/// (holger-zip-entry: size-capped at [`crate::MAX_WHEEL_METADATA`], CRC-checked,
/// traversal-closed).
pub fn core_metadata(file_name: &str, wheel: &[u8]) -> Result<Option<(Vec<u8>, String)>, String> {
    crate::counted();
    let base = file_name.rsplit('/').next().unwrap_or(file_name);
    let Some(stem) = base.strip_suffix(".whl") else {
        return Ok(None);
    };
    // `<name>-<version>(-<build>)?-<py>-<abi>-<plat>`: the dist-info is `<name>-<version>`.
    let mut parts = stem.split('-');
    let (Some(name), Some(version)) = (parts.next(), parts.next()) else {
        return Ok(None);
    };
    let dist_info = format!("{name}-{version}.dist-info/METADATA");
    match zip_entry::find_member_capped(wheel, crate::MAX_WHEEL_METADATA, |m| m == dist_info) {
        Ok(Some((_, meta))) => {
            use sha2::Digest as _;
            let sha: String = sha2::Sha256::digest(&meta)
                .iter()
                .map(|b| format!("{b:02x}"))
                .collect();
            Ok(Some((meta, sha)))
        }
        Ok(None) => Ok(None),
        Err(e) => Err(format!("{e:#}")),
    }
}