1pub type Result<T> = std::result::Result<T, Error>;
8
9#[derive(Debug, thiserror::Error)]
11pub enum Error {
12 #[error(transparent)]
14 Base64Decode(#[from] base64::DecodeError),
15
16 #[error("Backpack API error: {status_code}: {message}")]
18 BpxApiError {
19 status_code: reqwest::StatusCode,
20 message: Box<str>,
21 },
22
23 #[error(transparent)]
25 InvalidHeaderValue(#[from] reqwest::header::InvalidHeaderValue),
26
27 #[error("Invalid request: {0}")]
29 InvalidRequest(Box<str>),
30
31 #[error("Client is not authenticated")]
33 NotAuthenticated,
34
35 #[error(transparent)]
37 Reqwest(#[from] reqwest::Error),
38
39 #[error("Invalid secret key")]
41 SecretKey,
42
43 #[error(transparent)]
45 SerdeJson(#[from] serde_json::error::Error),
46
47 #[error(transparent)]
49 SystemTime(#[from] std::time::SystemTimeError),
50
51 #[error(transparent)]
53 Utf8(#[from] std::str::Utf8Error),
54
55 #[error("Invalid URL: {0}")]
57 UrlParseError(Box<str>),
58}
59
60impl From<url::ParseError> for Error {
61 fn from(e: url::ParseError) -> Self {
62 Error::UrlParseError(e.to_string().into_boxed_str())
63 }
64}