1use std::path::PathBuf;
2
3#[cfg(target_os = "macos")]
4use decrypt_cookies::safari::SafariError;
5use decrypt_cookies::{
6 chromium::{builder::ChromiumBuilderError, ChromiumError},
7 firefox::{builder::FirefoxBuilderError, FirefoxError},
8};
9use snafu::{Location, Snafu};
10
11#[derive(Snafu)]
12#[derive(Debug)]
13#[snafu(visibility(pub))]
14pub enum Error {
15 #[snafu(display("{source}\n@:{location}"))]
16 Json {
17 source: serde_json::Error,
18 #[snafu(implicit)]
19 location: Location,
20 },
21 #[snafu(display("{source}\n@:{location}"))]
22 BinaryCookies {
23 source: binary_cookies::error::ParseError,
24 #[snafu(implicit)]
25 location: Location,
26 },
27 #[snafu(display("Build Chromium: {source}\n@:{location}"))]
28 ChromiumBuilder {
29 source: ChromiumBuilderError,
30 #[snafu(implicit)]
31 location: Location,
32 },
33 #[snafu(display("Chromium: {source}\n@:{location}"))]
34 Chromium {
35 source: ChromiumError,
36 #[snafu(implicit)]
37 location: Location,
38 },
39 #[snafu(display("Build Firefox: {source}\n@:{location}"))]
40 FirefoxBuilder {
41 source: FirefoxBuilderError,
42 #[snafu(implicit)]
43 location: Location,
44 },
45 #[snafu(display("Firefox: {source}\n@:{location}"))]
46 Firefox {
47 source: FirefoxError,
48 #[snafu(implicit)]
49 location: Location,
50 },
51 #[cfg(target_os = "macos")]
52 #[snafu(display("Firefox: {source}\n@:{location}"))]
53 Safari {
54 source: SafariError,
55 #[snafu(implicit)]
56 location: Location,
57 },
58 #[snafu(display("{source} path: {}\n@:{location}", path.display()))]
59 Io {
60 source: std::io::Error,
61 path: PathBuf,
62 #[snafu(implicit)]
63 location: Location,
64 },
65 #[snafu(display("{source}\n@:{location}"))]
66 TokioTask {
67 source: tokio::task::JoinError,
68 #[snafu(implicit)]
69 location: Location,
70 },
71}
72
73pub type Result<T> = std::result::Result<T, Error>;