arminius_lib_federation_output_service_messages/
error.rs1use http::StatusCode;
8use serde::{Deserialize, Serialize};
9
10#[serde_with::serde_as]
12#[derive(Debug, Serialize, Deserialize)]
13pub struct ErrorResponse {
14 pub matrix_error: serde_json::Value,
16 #[serde_as(as = "serde_with::TryFromInto<u16>")]
18 pub http_error: StatusCode,
19}
20
21impl ErrorResponse {
22 #[must_use]
24 pub fn new(matrix_error: serde_json::Value, http_error: StatusCode) -> Self {
25 Self { matrix_error, http_error }
26 }
27}
28
29#[derive(Debug, thiserror::Error, Serialize, Deserialize)]
31pub enum MiscRequestError {
32 #[error("Remote server is unreachable: {0}")]
35 RemoteServerUnreachable(String),
36 #[error("Request to remote server timed out")]
38 RequestTimeout,
39 #[error("Invalid request: {0}")]
42 InvalidRequestError(String),
43 #[error("Matrix error")]
45 MatrixError(ErrorResponse),
46}