1#[derive(Debug, Clone)]
2pub enum RealtimeError {
3 BadRequest(String),
4 Unauthorized(String),
5 Forbidden(String),
6 NotFound(String),
7 Internal(String),
8}
9
10impl RealtimeError {
11 pub fn bad_request(message: impl Into<String>) -> Self {
12 Self::BadRequest(message.into())
13 }
14
15 pub fn forbidden(message: impl Into<String>) -> Self {
16 Self::Forbidden(message.into())
17 }
18
19 pub fn unauthorized(message: impl Into<String>) -> Self {
20 Self::Unauthorized(message.into())
21 }
22
23 pub fn not_found(message: impl Into<String>) -> Self {
24 Self::NotFound(message.into())
25 }
26
27 pub fn internal(message: impl Into<String>) -> Self {
28 Self::Internal(message.into())
29 }
30
31 pub fn message(&self) -> &str {
32 match self {
33 Self::BadRequest(message)
34 | Self::Unauthorized(message)
35 | Self::Forbidden(message)
36 | Self::NotFound(message)
37 | Self::Internal(message) => message,
38 }
39 }
40}
41
42impl std::fmt::Display for RealtimeError {
43 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44 write!(f, "{}", self.message())
45 }
46}
47
48impl std::error::Error for RealtimeError {}