wnfs_unixfs_file/
lib.rs

1pub mod balanced_tree;
2pub mod builder;
3pub mod chunker;
4pub mod codecs;
5pub mod protobufs;
6mod types;
7pub mod unixfs;
8
9use crate::codecs::Codec;
10use anyhow::{bail, Result};
11use libipld::{prelude::Codec as _, Cid, Ipld, IpldCodec};
12use std::collections::BTreeSet;
13
14/// Extract links from the given content.
15///
16/// Links will be returned as a sorted vec
17pub fn parse_links(codec: Codec, bytes: &[u8]) -> Result<Vec<Cid>> {
18    let mut cids = BTreeSet::new();
19    let codec = match codec {
20        Codec::DagCbor => IpldCodec::DagCbor,
21        Codec::DagPb => IpldCodec::DagPb,
22        Codec::DagJson => IpldCodec::DagJson,
23        Codec::Raw => IpldCodec::Raw,
24        _ => bail!("unsupported codec {:?}", codec),
25    };
26    codec.references::<Ipld, _>(bytes, &mut cids)?;
27    let links = cids.into_iter().collect();
28    Ok(links)
29}