dwn 0.4.0

Rust implementation of a Decentralized Web Node.
Documentation
use base64::{DecodeError, Engine, prelude::BASE64_URL_SAFE_NO_PAD};
use dwn_core::message::{Message, data::Data};

pub mod delete;
pub mod query;
pub mod read;
pub mod write;

pub struct RecordView {
    data: Option<Vec<u8>>,
    entry: Message,
}

impl RecordView {
    fn from_entry(mut entry: Message) -> Result<Self, DecodeError> {
        let data = match entry.data.take() {
            Some(Data::Base64(encoded)) => {
                let decoded = BASE64_URL_SAFE_NO_PAD.decode(encoded)?;
                Some(decoded)
            }
            Some(Data::Encrypted(_)) => todo!(),
            None => None,
        };

        Ok(Self { data, entry })
    }

    pub fn data(&self) -> Option<&[u8]> {
        self.data.as_deref()
    }
    pub fn into_data(self) -> Option<Vec<u8>> {
        self.data
    }

    pub fn entry(&self) -> &Message {
        &self.entry
    }
}