use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("invalid did:key: {0}")]
InvalidDidKey(String),
#[error("multibase decode error: {0}")]
Multibase(String),
#[error("ed25519 error: {0}")]
Ed25519(String),
#[error("bolt11 error: {0}")]
Bolt11(String),
#[error("jws error: {0}")]
Jws(String),
#[error("envelope error: {0}")]
Envelope(String),
#[error("token error: {0}")]
Token(String),
#[error("lightning error: {0}")]
Lightning(String),
#[error("paywall: {0}")]
Paywall(String),
#[error("fetch-with-l402: {reason}: {message}")]
FetchWithL402 { message: String, reason: String },
#[error("json error: {0}")]
Json(#[from] serde_json::Error),
#[error("http error: {0}")]
Http(String),
#[error("{0}")]
Other(String),
}
impl Error {
pub fn fetch(message: impl Into<String>, reason: impl Into<String>) -> Self {
Error::FetchWithL402 {
message: message.into(),
reason: reason.into(),
}
}
}