use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum Error {
#[error("invalid acct URI: {0}")]
InvalidAcct(String),
#[error("invalid URL: {0}")]
InvalidUrl(#[from] url::ParseError),
#[error("WebFinger JRD is missing `subject`")]
MissingSubject,
#[error("WebFinger subject mismatch: requested {requested}, got {returned}")]
SubjectMismatch {
requested: String,
returned: String,
},
#[error("WebFinger JRD does not reference an ActivityPub actor")]
MissingActorLink,
#[cfg(feature = "client")]
#[cfg_attr(docsrs, doc(cfg(feature = "client")))]
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
#[cfg(feature = "client")]
#[cfg_attr(docsrs, doc(cfg(feature = "client")))]
#[error("WebFinger server returned status {0}")]
BadStatus(u16),
#[cfg(feature = "client")]
#[cfg_attr(docsrs, doc(cfg(feature = "client")))]
#[error("WebFinger response exceeded {0} bytes")]
ResponseTooLarge(u64),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
}