1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use libipld::cid::Cid;

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Block {
    pub cid: Cid,
    pub data: Box<[u8]>,
}

impl Block {
    pub fn new(data: Box<[u8]>, cid: Cid) -> Self {
        Self { cid, data }
    }

    pub fn cid(&self) -> &Cid {
        &self.cid
    }

    pub fn data(&self) -> &[u8] {
        &self.data
    }
}

#[cfg(test)]
pub(crate) mod tests {
    use super::*;
    use libipld::cid::Codec;
    use multihash::Sha2_256;

    pub fn create_block(bytes: &[u8]) -> Block {
        let digest = Sha2_256::digest(bytes);
        let cid = Cid::new_v1(Codec::Raw, digest);
        Block::new(bytes.to_vec().into_boxed_slice(), cid)
    }
}