Skip to main content

toole_core/
error.rs

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
57// quinn::ReadExactError (pas tokio::io::ReadExactError)
58impl 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}