1use atrium_api::types::string::Did;
2use atrium_xrpc::http::uri::InvalidUri;
3use atrium_xrpc::http::StatusCode;
4use thiserror::Error;
5
6#[derive(Error, Debug)]
7pub enum Error {
8 #[error("resource not found")]
9 NotFound,
10 #[error("invalid at identifier: {0}")]
11 AtIdentifier(String),
12 #[error("invalid did: {0}")]
13 Did(String),
14 #[error("invalid did document: {0}")]
15 DidDocument(String),
16 #[error("protected resource metadata is invalid: {0}")]
17 ProtectedResourceMetadata(String),
18 #[error("authorization server metadata is invalid: {0}")]
19 AuthorizationServerMetadata(String),
20 #[error("dns resolver error: {0}")]
21 DnsResolver(Box<dyn std::error::Error + Send + Sync + 'static>),
22 #[error("unsupported did method: {0:?}")]
23 UnsupportedDidMethod(Did),
24 #[error(transparent)]
25 Http(#[from] atrium_xrpc::http::Error),
26 #[error("http client error: {0}")]
27 HttpClient(Box<dyn std::error::Error + Send + Sync + 'static>),
28 #[error("http status: {0:?}")]
29 HttpStatus(StatusCode),
30 #[error(transparent)]
31 SerdeJson(#[from] serde_json::Error),
32 #[error(transparent)]
33 SerdeHtmlForm(#[from] serde_html_form::ser::Error),
34 #[error(transparent)]
35 Uri(#[from] InvalidUri),
36}
37
38pub type Result<T> = core::result::Result<T, Error>;