From bc0a275fab07ec246f75a08e067e75b8a6268a4f Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 25 Mar 2024 19:21:42 -0700 Subject: [PATCH] Add automatic CID conversaion error --- src/delegation/store/traits.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/delegation/store/traits.rs b/src/delegation/store/traits.rs index c917dc20..0e79f1fe 100644 --- a/src/delegation/store/traits.rs +++ b/src/delegation/store/traits.rs @@ -11,6 +11,7 @@ use libipld_core::ipld::Ipld; use libipld_core::{cid::Cid, codec::Codec}; use nonempty::NonEmpty; use std::{fmt::Debug, sync::Arc}; +use thiserror::Error; use web_time::SystemTime; pub trait Store + Clone, C: Codec + TryFrom + Into> @@ -26,8 +27,12 @@ where cid: &Cid, ) -> Result>>, Self::DelegationStoreError>; - fn insert(&self, delegation: Delegation) -> Result<(), Self::DelegationStoreError> { - self.insert_keyed(delegation.cid().expect("FIXME"), delegation) + fn insert( + &self, + delegation: Delegation, + ) -> Result<(), CannotCidOr> { + self.insert_keyed(delegation.cid()?, delegation) + .map_err(CannotCidOr::StoreError) } fn insert_keyed( @@ -128,3 +133,12 @@ where (**self).get_chain(audience, subject, command, policy, now) } } + +#[derive(Debug, Error)] +pub enum CannotCidOr { + #[error("Cannot make CID from delegation based on supplied Varsig")] + CannotMakeCid(#[from] libipld_core::error::Error), + + #[error("Store error: {0}")] + StoreError(E), +}