did_utils/methods/peer/
errors.rs1use 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) }
70}
71
72impl std::error::Error for DIDPeerMethodError {}