mithril_common/entities/
http_server_error.rs

1use std::fmt::Display;
2
3use serde::{Deserialize, Serialize};
4
5use crate::StdError;
6
7/// Representation of a Server Error raised by a http server
8#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
9pub struct ServerError {
10    /// error message
11    pub message: String,
12}
13
14impl ServerError {
15    /// InternalServerError factory
16    pub fn new<M: Into<String>>(message: M) -> ServerError {
17        ServerError {
18            message: message.into(),
19        }
20    }
21}
22
23impl Display for ServerError {
24    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
25        write!(f, "{}", self.message)
26    }
27}
28
29impl From<String> for ServerError {
30    fn from(message: String) -> Self {
31        ServerError::new(message)
32    }
33}
34
35impl From<&str> for ServerError {
36    fn from(message: &str) -> Self {
37        ServerError::new(message.to_string())
38    }
39}
40
41impl From<StdError> for ServerError {
42    fn from(error: StdError) -> Self {
43        ServerError::new(format!("{error:?}"))
44    }
45}
46
47/// Representation of a Client Error raised by an http server
48#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
49pub struct ClientError {
50    /// error label
51    pub label: String,
52
53    /// error message
54    pub message: String,
55}
56
57impl ClientError {
58    /// ClientError factory
59    pub fn new<L: Into<String>, M: Into<String>>(label: L, message: M) -> ClientError {
60        ClientError {
61            label: label.into(),
62            message: message.into(),
63        }
64    }
65}
66
67impl Display for ClientError {
68    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
69        write!(f, "{}: {}", self.label, self.message)
70    }
71}