1use thiserror::Error;
4
5#[cfg(feature = "openapi")]
6use utoipa::ToSchema;
7
8#[derive(Debug, Clone, Error)]
10#[cfg_attr(feature = "openapi", derive(ToSchema))]
11pub enum ConversionError {
12 #[error("invalid subject identifier: {0}")]
13 InvalidSubjectId(String),
14
15 #[error("invalid governance identifier: {0}")]
16 InvalidGovernanceId(String),
17
18 #[error("invalid schema identifier: {0}")]
19 InvalidSchemaId(String),
20
21 #[error("invalid public key: {0}")]
22 InvalidPublicKey(String),
23
24 #[error("invalid namespace: {0}")]
25 InvalidNamespace(String),
26
27 #[error("missing governance identifier")]
28 MissingGovernanceId,
29
30 #[error("missing namespace")]
31 MissingNamespace,
32}
33
34#[derive(Debug, Clone, Error)]
36#[cfg_attr(feature = "openapi", derive(ToSchema))]
37pub enum SignatureError {
38 #[error("invalid public key: {0}")]
39 InvalidPublicKey(String),
40
41 #[error("invalid signature value: {0}")]
42 InvalidSignature(String),
43
44 #[error("invalid content hash: {0}")]
45 InvalidContentHash(String),
46}
47
48#[derive(Error, Debug, Clone)]
50#[cfg_attr(feature = "openapi", derive(ToSchema))]
51pub enum Error {
52 #[error("bridge error: {0}")]
54 Bridge(String),
55
56 #[error("serde error: {0}")]
58 Serde(String),
59
60 #[error("invalid identifier: {0}")]
62 InvalidIdentifier(String),
63
64 #[error("conversion error: {0}")]
66 Conversion(#[from] ConversionError),
67
68 #[error("signature error: {0}")]
70 Signature(#[from] SignatureError),
71
72 #[error("{0}")]
74 Generic(String),
75}
76
77impl From<serde_json::Error> for Error {
78 fn from(err: serde_json::Error) -> Self {
79 Self::Serde(err.to_string())
80 }
81}