#[derive(Debug, Clone)]
pub enum RealtimeError {
BadRequest(String),
Unauthorized(String),
Forbidden(String),
NotFound(String),
Internal(String),
}
impl RealtimeError {
pub fn bad_request(message: impl Into<String>) -> Self {
Self::BadRequest(message.into())
}
pub fn forbidden(message: impl Into<String>) -> Self {
Self::Forbidden(message.into())
}
pub fn unauthorized(message: impl Into<String>) -> Self {
Self::Unauthorized(message.into())
}
pub fn not_found(message: impl Into<String>) -> Self {
Self::NotFound(message.into())
}
pub fn internal(message: impl Into<String>) -> Self {
Self::Internal(message.into())
}
pub fn message(&self) -> &str {
match self {
Self::BadRequest(message)
| Self::Unauthorized(message)
| Self::Forbidden(message)
| Self::NotFound(message)
| Self::Internal(message) => message,
}
}
}
impl std::fmt::Display for RealtimeError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.message())
}
}
impl std::error::Error for RealtimeError {}