diff options
Diffstat (limited to 'crates/common/download/src/error.rs')
-rw-r--r-- | crates/common/download/src/error.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/crates/common/download/src/error.rs b/crates/common/download/src/error.rs new file mode 100644 index 00000000..4647dfef --- /dev/null +++ b/crates/common/download/src/error.rs @@ -0,0 +1,39 @@ +#[derive(Debug, thiserror::Error)] +pub enum DownloadError { + #[error(transparent)] + FromBackoff(#[from] backoff::Error<reqwest::Error>), + + #[error(transparent)] + FromElapsed(#[from] tokio::time::error::Elapsed), + + #[error("I/O error: {reason:?}")] + FromIo { reason: String }, + + #[error("JSON parse error: {reason:?}")] + FromReqwest { reason: String }, + + #[error(transparent)] + FromUrlParse(#[from] url::ParseError), + + #[error(transparent)] + FromNix(#[from] nix::Error), + + #[error("Not enough disk space")] + InsufficientSpace, +} + +impl From<reqwest::Error> for DownloadError { + fn from(err: reqwest::Error) -> Self { + DownloadError::FromReqwest { + reason: format!("{}", err), + } + } +} + +impl From<std::io::Error> for DownloadError { + fn from(err: std::io::Error) -> Self { + DownloadError::FromIo { + reason: format!("{}", err), + } + } +} |