Skip to main content

va_ai_api_bridge/
error.rs

1use std::fmt;
2
3pub type Result<T> = std::result::Result<T, ApiBridgeError>;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub enum ApiBridgeError {
7    UnsupportedProtocol { protocol: String },
8    InvalidRequest { message: String },
9    InvalidResponse { message: String },
10    Conversion { message: String },
11    Adapter { message: String },
12}
13
14impl ApiBridgeError {
15    pub fn unsupported_protocol(protocol: impl Into<String>) -> Self {
16        Self::UnsupportedProtocol {
17            protocol: protocol.into(),
18        }
19    }
20
21    pub fn invalid_request(message: impl Into<String>) -> Self {
22        Self::InvalidRequest {
23            message: message.into(),
24        }
25    }
26
27    pub fn invalid_response(message: impl Into<String>) -> Self {
28        Self::InvalidResponse {
29            message: message.into(),
30        }
31    }
32
33    pub fn conversion(message: impl Into<String>) -> Self {
34        Self::Conversion {
35            message: message.into(),
36        }
37    }
38
39    pub fn adapter(message: impl Into<String>) -> Self {
40        Self::Adapter {
41            message: message.into(),
42        }
43    }
44}
45
46impl fmt::Display for ApiBridgeError {
47    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48        match self {
49            Self::UnsupportedProtocol { protocol } => {
50                write!(f, "unsupported protocol: {protocol}")
51            }
52            Self::InvalidRequest { message } => write!(f, "invalid request: {message}"),
53            Self::InvalidResponse { message } => write!(f, "invalid response: {message}"),
54            Self::Conversion { message } => write!(f, "conversion failed: {message}"),
55            Self::Adapter { message } => write!(f, "adapter failed: {message}"),
56        }
57    }
58}
59
60impl std::error::Error for ApiBridgeError {}