did_utils/methods/peer/
errors.rs

1use serde_json::Error as SerdeError;
2
3use crate::{crypto::Error as CryptoError, methods::errors::DIDResolutionError};
4
5#[derive(Debug)]
6pub enum DIDPeerMethodError {
7    CryptoError(CryptoError),
8    DIDParseError,
9    DIDResolutionError(DIDResolutionError),
10    EmptyArguments,
11    IllegalArgument,
12    InvalidHash,
13    InvalidPeerDID,
14    InvalidPurposeCode,
15    InvalidStoredVariant,
16    MalformedPeerDID,
17    MalformedLongPeerDID,
18    RegexMismatch,
19    SerdeError(SerdeError),
20    UnexpectedPurpose,
21    UnsupportedPeerDIDAlgorithm,
22}
23
24impl From<CryptoError> for DIDPeerMethodError {
25    fn from(err: CryptoError) -> Self {
26        Self::CryptoError(err)
27    }
28}
29
30impl From<DIDResolutionError> for DIDPeerMethodError {
31    fn from(err: DIDResolutionError) -> Self {
32        Self::DIDResolutionError(err)
33    }
34}
35
36impl From<SerdeError> for DIDPeerMethodError {
37    fn from(err: SerdeError) -> Self {
38        Self::SerdeError(err)
39    }
40}
41
42impl From<DIDPeerMethodError> for DIDResolutionError {
43    fn from(err: DIDPeerMethodError) -> Self {
44        use DIDPeerMethodError::*;
45
46        match err {
47            CryptoError(_) => Self::InvalidDid,
48            DIDParseError => Self::InvalidDid,
49            DIDResolutionError(err) => err,
50            EmptyArguments => Self::InternalError,
51            IllegalArgument => Self::InvalidDid,
52            InvalidHash => Self::InvalidDid,
53            InvalidPeerDID => Self::InvalidDid,
54            InvalidPurposeCode => Self::InvalidDid,
55            InvalidStoredVariant => Self::InternalError,
56            MalformedPeerDID => Self::InvalidDid,
57            MalformedLongPeerDID => Self::InvalidDid,
58            RegexMismatch => Self::InvalidDid,
59            SerdeError(_) => Self::InvalidDid,
60            UnexpectedPurpose => Self::InvalidDid,
61            UnsupportedPeerDIDAlgorithm => Self::MethodNotSupported,
62        }
63    }
64}
65
66impl std::fmt::Display for DIDPeerMethodError {
67    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
68        write!(f, "{}", self) // Customize this to format the error as desired
69    }
70}
71
72impl std::error::Error for DIDPeerMethodError {}