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::{Result, bail};
11use ipld_core::ipld::Ipld;
12use std::collections::BTreeSet;
13use wnfs_common::Cid;
14
15pub fn parse_links(codec: Codec, bytes: &[u8]) -> Result<Vec<Cid>> {
19 let mut cids = BTreeSet::new();
20 match codec {
21 Codec::DagCbor => serde_ipld_dagcbor::from_slice::<Ipld>(bytes)?.references(&mut cids),
22 Codec::DagJson => serde_ipld_dagjson::from_slice::<Ipld>(bytes)?.references(&mut cids),
23 Codec::DagPb => ipld_dagpb::links(bytes, &mut cids)?,
24 Codec::Raw => {}
25 _ => bail!("unsupported codec {:?}", codec),
26 };
27 let links = cids.into_iter().collect();
28 Ok(links)
29}