backblaze_b2_client/tasks/upload/
error.rs

1use core::fmt;
2use std::error::Error;
3
4use crate::{error::B2Error, util::InvalidValue};
5
6#[derive(Debug)]
7pub enum FileUploadError {
8    Aborted,
9    AlreadyStarted,
10    FailedToReadFile(std::io::Error),
11    RequestError(B2Error),
12    InvalidOptions(InvalidValue),
13}
14
15impl Error for FileUploadError {}
16
17impl fmt::Display for FileUploadError {
18    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19        write!(f, "B2 upload failed, ")?;
20
21        match self {
22            Self::Aborted => write!(f, "Request was aborted."),
23            Self::AlreadyStarted => write!(f, "Already started file upload."),
24            Self::FailedToReadFile(err) => write!(f, "Failed to read file to upload: {}", err),
25            Self::RequestError(err) => write!(f, "{}", err),
26            Self::InvalidOptions(err) => write!(f, "{}", err),
27        }
28    }
29}
30
31impl From<B2Error> for FileUploadError {
32    fn from(value: B2Error) -> Self {
33        FileUploadError::RequestError(value)
34    }
35}
36
37impl From<InvalidValue> for FileUploadError {
38    fn from(value: InvalidValue) -> Self {
39        FileUploadError::InvalidOptions(value)
40    }
41}
42
43impl From<std::io::Error> for FileUploadError {
44    fn from(value: std::io::Error) -> Self {
45        FileUploadError::FailedToReadFile(value)
46    }
47}