use thiserror::Error;
#[derive(Debug, Error)]
pub enum VerificationError {
#[error("error-atproto-record-verification-1 No signatures field found in record")]
NoSignaturesField,
#[error("error-atproto-record-verification-2 Missing issuer field in signature object")]
MissingIssuerField,
#[error("error-atproto-record-verification-3 Missing signature field in signature object")]
MissingSignatureField,
#[error("error-atproto-record-verification-4 Record serialization failed: {error}")]
RecordSerializationFailed {
#[from]
error: serde_ipld_dagcbor::EncodeError<std::collections::TryReserveError>,
},
#[error("error-atproto-record-verification-5 Signature verification failed: {error}")]
SignatureVerificationFailed {
error: anyhow::Error,
},
#[error("error-atproto-record-verification-6 No valid signature found for issuer: {issuer}")]
NoValidSignatureForIssuer {
issuer: String,
},
#[error("error-atproto-record-verification-7 Signature object must be a JSON object")]
InvalidSignatureObjectType,
#[error("error-atproto-record-verification-8 Signature object missing field: {field}")]
SignatureObjectMissingField {
field: String,
},
#[error("error-atproto-record-verification-9 Key operation failed: {error}")]
KeyOperationFailed {
#[from]
error: atproto_identity::errors::KeyError,
},
#[error("error-atproto-record-verification-10 Signature decoding failed: {error}")]
SignatureDecodingFailed {
error: base64::DecodeError,
},
#[error("error-atproto-record-verification-11 Cryptographic validation failed: {error}")]
CryptographicValidationFailed {
error: atproto_identity::errors::KeyError,
},
}
#[derive(Debug, Error)]
pub enum AturiError {
#[error("error-atproto-record-aturi-1 Invalid AT-URI format: missing 'at://' prefix")]
MissingPrefix,
#[error("error-atproto-record-aturi-2 Invalid AT-URI format: trailing slash not permitted")]
TrailingSlash,
#[error("error-atproto-record-aturi-3 Authority component missing from AT-URI")]
AuthorityMissing,
#[error("error-atproto-record-aturi-4 Unsupported authority type: handle not permitted")]
HandleNotSupported,
#[error("error-atproto-record-aturi-5 Authority parsing failed: {error}")]
AuthorityParsingFailed {
#[from]
error: atproto_identity::errors::ResolveError,
},
#[error("error-atproto-record-aturi-6 Collection component missing from AT-URI")]
CollectionMissing,
#[error("error-atproto-record-aturi-7 Record key component missing from AT-URI")]
RecordKeyMissing,
#[error("error-atproto-record-aturi-8 Collection component cannot be empty")]
EmptyCollection,
#[error("error-atproto-record-aturi-9 Record key component cannot be empty")]
EmptyRecordKey,
}
#[derive(Debug, Error)]
pub enum CliError {
#[error("error-atproto-record-cli-1 Unsupported DID method: {method}")]
UnsupportedDidMethod {
method: String,
},
#[error("error-atproto-record-cli-2 Failed to parse DID: {did}")]
DidParseFailed {
did: String,
},
#[error("error-atproto-record-cli-3 Failed to read from stdin")]
StdinReadFailed,
#[error("error-atproto-record-cli-4 Failed to parse JSON from stdin")]
StdinJsonParseFailed,
#[error("error-atproto-record-cli-5 Failed to read file: {path}")]
FileReadFailed {
path: String,
},
#[error("error-atproto-record-cli-6 Failed to parse JSON from file: {path}")]
FileJsonParseFailed {
path: String,
},
#[error("error-atproto-record-cli-7 Unexpected argument: {argument}")]
UnexpectedArgument {
argument: String,
},
#[error("error-atproto-record-cli-8 Missing required value: {name}")]
MissingRequiredValue {
name: String,
},
}