1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum ToolError {
5 #[error("IO error: {0}")]
6 IoError(#[from] std::io::Error),
7
8 #[error("Failed to parse private key")]
9 ParseKeyError,
10
11 #[error("Failed to get app directories")]
12 AppDirError,
13
14 #[error("QUIC error: {0}")]
15 QuinnError(String),
16
17 #[error("Transfer error: {0}")]
18 TransferError(String),
19
20 #[error("Transfert annulé par l'utilisateur")]
21 Cancelled,
22
23 #[error("Transfert annulé par le destinataire")]
24 RemoteCancel,
25
26 #[error("Transfert refusé par le destinataire")]
27 Refused,
28
29 #[error("Stream closed")]
30 ClosedStream(#[from] quinn::ClosedStream),
31
32 #[error("JSON error: {0}")]
33 JsonError(#[from] serde_json::Error),
34
35 #[error("TLS error: {0}")]
36 TlsError(#[from] rustls::Error),
37}
38
39impl From<quinn::ConnectionError> for ToolError {
40 fn from(e: quinn::ConnectionError) -> Self {
41 ToolError::QuinnError(e.to_string())
42 }
43}
44
45impl From<quinn::WriteError> for ToolError {
46 fn from(e: quinn::WriteError) -> Self {
47 ToolError::QuinnError(e.to_string())
48 }
49}
50
51impl From<quinn::ReadError> for ToolError {
52 fn from(e: quinn::ReadError) -> Self {
53 ToolError::QuinnError(e.to_string())
54 }
55}
56
57impl From<quinn::ReadExactError> for ToolError {
59 fn from(e: quinn::ReadExactError) -> Self {
60 ToolError::QuinnError(e.to_string())
61 }
62}
63
64impl From<rcgen::Error> for ToolError {
65 fn from(e: rcgen::Error) -> Self {
66 ToolError::TransferError(e.to_string())
67 }
68}