brainwires_proxy/
error.rs1use std::io;
2
3#[derive(Debug, thiserror::Error)]
5pub enum ProxyError {
6 #[error("transport error: {0}")]
7 Transport(String),
8
9 #[error("connection failed: {0}")]
10 Connection(String),
11
12 #[error("upstream unreachable: {0}")]
13 UpstreamUnreachable(String),
14
15 #[error("middleware rejected request: {0}")]
16 MiddlewareRejected(String),
17
18 #[error("conversion error: {0}")]
19 Conversion(String),
20
21 #[error("format detection failed: no matching format for content")]
22 FormatDetectionFailed,
23
24 #[error("unsupported conversion: {src} -> {dst}")]
25 UnsupportedConversion { src: String, dst: String },
26
27 #[error("configuration error: {0}")]
28 Config(String),
29
30 #[error("timeout after {0:?}")]
31 Timeout(std::time::Duration),
32
33 #[error("request too large: {size} bytes exceeds limit of {limit} bytes")]
34 RequestTooLarge { size: usize, limit: usize },
35
36 #[error("rate limited")]
37 RateLimited,
38
39 #[error("I/O error: {0}")]
40 Io(#[from] io::Error),
41
42 #[error("JSON error: {0}")]
43 Json(#[from] serde_json::Error),
44
45 #[error("HTTP error: {0}")]
46 Http(#[from] http::Error),
47
48 #[error("shutdown signal received")]
49 Shutdown,
50
51 #[error("{0}")]
52 Other(#[from] anyhow::Error),
53}
54
55pub type ProxyResult<T> = Result<T, ProxyError>;