cloud_storage_sync/
error.rs1use snafu::{Backtrace, Snafu};
2use std::path::PathBuf;
3
4#[derive(Debug, Clone)]
5pub enum OpSource {
6 CreateObject,
7 CopyObject,
8 ReadObject,
9 DownloadUrl,
10 ListPrefix,
11 Pre(Box<Self>),
12}
13
14impl OpSource {
15 pub fn pre(op: OpSource) -> Self {
16 Self::Pre(Box::new(op))
17 }
18}
19
20#[derive(Debug, Snafu)]
21#[snafu(visibility(pub(crate)))]
22pub enum Error {
23 CloudStorage {
24 #[snafu(source(from(cloud_storage::Error, Box::new)))]
25 source: Box<cloud_storage::Error>,
26 object: String,
27 op: OpSource,
28 },
29 #[snafu(display("IOError occured, path: {}: {}", "path", "source"))]
30 Io {
31 path: PathBuf,
32 source: std::io::Error,
33 backtrace: Backtrace,
34 },
35 #[snafu(display("Tokio IOError occured, path: {}: {}", "path", "source"))]
36 TokioIo {
37 path: PathBuf,
38 source: tokio::io::Error,
39 backtrace: Backtrace,
40 },
41 #[snafu(context(false))]
42 Reqwest {
43 source: reqwest::Error,
44 },
45 Other {
46 message: &'static str,
47 },
48 WrongPath {
49 path: PathBuf,
50 },
51 AlreadyExists {
52 path: PathBuf,
53 },
54}