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
14pub 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}