use anyhow::Result;
use crate::spec::ResolvedSpec;
pub const REPODATA_SNAPSHOT_MEDIA_TYPE: &str = "application/vnd.bv.repodata.snapshot.v1+json";
pub fn build_repodata_snapshot(resolved: &ResolvedSpec) -> Result<Vec<u8>> {
let snapshot = serde_json::json!({
"schema": "bv.repodata.snapshot.v1",
"name": resolved.name,
"version": resolved.version,
"platform": resolved.platform.to_string(),
"channels": resolved.channels,
"packages": resolved.packages.iter().map(|p| serde_json::json!({
"name": p.name,
"version": p.version,
"build": p.build,
"channel": p.channel,
"url": p.url,
"sha256": p.sha256,
"filename": p.filename,
})).collect::<Vec<_>>(),
});
Ok(serde_json::to_vec_pretty(&snapshot)?)
}