Skip to main content

brainwires_proxy/
error.rs

1use std::io;
2
3/// Errors that can occur in the proxy framework.
4#[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>;