use std::sync::Arc; #[derive(Clone, Debug, thiserror::Error)] pub enum Error { #[error("HTTP Digest generation error")] Digest, #[error("JSON encoding error")] Json(#[from] Arc), #[error("Signature error")] Signature(#[from] Arc), #[error("Signature verification failure")] SignatureFail(String), #[error("HTTP request error")] HttpReq(#[from] Arc), #[error("HTTP client error")] Http(#[from] Arc), #[error("Invalid URI")] InvalidUri, #[error("Error response from remote")] Response(String), } impl From for Error { fn from(e: serde_json::Error) -> Self { Error::Json(Arc::new(e)) } } impl From for Error { fn from(e: reqwest::Error) -> Self { Error::Http(Arc::new(e)) } } impl From for Error { fn from(e: sigh::Error) -> Self { Error::Signature(Arc::new(e)) } } impl From for Error { fn from(e: http::Error) -> Self { Error::HttpReq(Arc::new(e)) } }