Implement Display, Error for error::Error
This commit is contained in:
parent
1b7863dc36
commit
738ef99dd7
48
src/error.rs
48
src/error.rs
@ -1,99 +1,131 @@
|
||||
//! Errors that can be sent from the homeserver.
|
||||
|
||||
use std::fmt::{self, Display, Formatter};
|
||||
|
||||
use ruma_api::{error::ResponseDeserializationError, EndpointError};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use strum::{AsRefStr, Display, EnumString};
|
||||
|
||||
/// An enum for the error kind. Items may contain additional information.
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, AsRefStr, Display, EnumString)]
|
||||
#[serde(tag = "errcode")]
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
pub enum ErrorKind {
|
||||
/// M_FORBIDDEN
|
||||
#[serde(rename = "M_FORBIDDEN")]
|
||||
#[strum(to_string = "M_FORBIDDEN")]
|
||||
Forbidden,
|
||||
/// M_UNKNOWN_TOKEN
|
||||
#[serde(rename = "M_UNKNOWN_TOKEN")]
|
||||
#[strum(to_string = "M_UNKNOWN_TOKEN")]
|
||||
UnknownToken,
|
||||
/// M_MISSING_TOKEN
|
||||
#[serde(rename = "M_MISSING_TOKEN")]
|
||||
#[strum(to_string = "M_MISSING_TOKEN")]
|
||||
MissingToken,
|
||||
/// M_BAD_JSON
|
||||
#[serde(rename = "M_BAD_JSON")]
|
||||
#[strum(to_string = "M_BAD_JSON")]
|
||||
BadJson,
|
||||
/// M_NOT_JSON
|
||||
#[serde(rename = "M_NOT_JSON")]
|
||||
#[strum(to_string = "M_NOT_JSON")]
|
||||
NotJson,
|
||||
/// M_NOT_FOUND
|
||||
#[serde(rename = "M_NOT_FOUND")]
|
||||
#[strum(to_string = "M_NOT_FOUND")]
|
||||
NotFound,
|
||||
/// M_LIMIT_EXCEEDED
|
||||
#[serde(rename = "M_LIMIT_EXCEEDED")]
|
||||
#[strum(to_string = "M_LIMIT_EXCEEDED")]
|
||||
LimitExceeded,
|
||||
/// M_UNKNOWN
|
||||
#[serde(rename = "M_UNKNOWN")]
|
||||
#[strum(to_string = "M_UNKNOWN")]
|
||||
Unknown,
|
||||
/// M_UNRECOGNIZED
|
||||
#[serde(rename = "M_UNRECOGNIZED")]
|
||||
#[strum(to_string = "M_UNRECOGNIZED")]
|
||||
Unrecognized,
|
||||
/// M_UNAUTHORIZED
|
||||
#[serde(rename = "M_UNAUTHORIZED")]
|
||||
#[strum(to_string = "M_UNAUTHORIZED")]
|
||||
Unauthorized,
|
||||
/// M_USER_IN_USE
|
||||
#[serde(rename = "M_USER_IN_USE")]
|
||||
#[strum(to_string = "M_USER_IN_USE")]
|
||||
UserInUse,
|
||||
/// M_INVALID_USERNAME
|
||||
#[serde(rename = "M_INVALID_USERNAME")]
|
||||
#[strum(to_string = "M_INVALID_USERNAME")]
|
||||
InvalidUsername,
|
||||
/// M_ROOM_IN_USE
|
||||
#[serde(rename = "M_ROOM_IN_USE")]
|
||||
#[strum(to_string = "M_ROOM_IN_USE")]
|
||||
RoomInUse,
|
||||
/// M_INVALID_ROOM_STATE
|
||||
#[serde(rename = "M_INVALID_ROOM_STATE")]
|
||||
#[strum(to_string = "M_INVALID_ROOM_STATE")]
|
||||
InvalidRoomState,
|
||||
/// M_THREEPID_IN_USE
|
||||
#[serde(rename = "M_THREEPID_IN_USE")]
|
||||
#[strum(to_string = "M_THREEPID_IN_USE")]
|
||||
ThreepidInUse,
|
||||
/// M_THREEPID_NOT_FOUND
|
||||
#[serde(rename = "M_THREEPID_NOT_FOUND")]
|
||||
#[strum(to_string = "M_THREEPID_NOT_FOUND")]
|
||||
ThreepidNotFound,
|
||||
/// M_THREEPID_AUTH_FAILED
|
||||
#[serde(rename = "M_THREEPID_AUTH_FAILED")]
|
||||
#[strum(to_string = "M_THREEPID_AUTH_FAILED")]
|
||||
ThreepidAuthFailed,
|
||||
/// M_THREEPID_DENIED
|
||||
#[serde(rename = "M_THREEPID_DENIED")]
|
||||
#[strum(to_string = "M_THREEPID_DENIED")]
|
||||
ThreepidDenied,
|
||||
/// M_SERVER_NOT_TRUSTED
|
||||
#[serde(rename = "M_SERVER_NOT_TRUSTED")]
|
||||
#[strum(to_string = "M_SERVER_NOT_TRUSTED")]
|
||||
ServerNotTrusted,
|
||||
/// M_UNSUPPORTED_ROOM_VERSION
|
||||
#[serde(rename = "M_UNSUPPORTED_ROOM_VERSION")]
|
||||
#[strum(to_string = "M_UNSUPPORTED_ROOM_VERSION")]
|
||||
UnsupportedRoomVersion,
|
||||
/// M_INCOMPATIBLE_ROOM_VERSION
|
||||
#[serde(rename = "M_INCOMPATIBLE_ROOM_VERSION")]
|
||||
#[strum(to_string = "M_INCOMPATIBLE_ROOM_VERSION")]
|
||||
IncompatibleRoomVersion,
|
||||
/// M_BAD_STATE
|
||||
#[serde(rename = "M_BAD_STATE")]
|
||||
#[strum(to_string = "M_BAD_STATE")]
|
||||
BadState,
|
||||
/// M_GUEST_ACCESS_FORBIDDEN
|
||||
#[serde(rename = "M_GUEST_ACCESS_FORBIDDEN")]
|
||||
#[strum(to_string = "M_GUEST_ACCESS_FORBIDDEN")]
|
||||
GuestAccessForbidden,
|
||||
/// M_CAPTCHA_NEEDED
|
||||
#[serde(rename = "M_CAPTCHA_NEEDED")]
|
||||
#[strum(to_string = "M_CAPTCHA_NEEDED")]
|
||||
CaptchaNeeded,
|
||||
/// M_CAPTCHA_INVALID
|
||||
#[serde(rename = "M_CAPTCHA_INVALID")]
|
||||
#[strum(to_string = "M_CAPTCHA_INVALID")]
|
||||
CaptchaInvalid,
|
||||
/// M_MISSING_PARAM
|
||||
#[serde(rename = "M_MISSING_PARAM")]
|
||||
#[strum(to_string = "M_MISSING_PARAM")]
|
||||
MissingParam,
|
||||
/// M_INVALID_PARAM
|
||||
#[serde(rename = "M_INVALID_PARAM")]
|
||||
#[strum(to_string = "M_INVALID_PARAM")]
|
||||
InvalidParam,
|
||||
/// M_TOO_LARGE
|
||||
#[serde(rename = "M_TOO_LARGE")]
|
||||
#[strum(to_string = "M_TOO_LARGE")]
|
||||
TooLarge,
|
||||
/// M_EXCLUSIVE
|
||||
#[serde(rename = "M_EXCLUSIVE")]
|
||||
#[strum(to_string = "M_EXCLUSIVE")]
|
||||
Exclusive,
|
||||
}
|
||||
|
||||
@ -131,6 +163,20 @@ impl EndpointError for Error {
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Error {
|
||||
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"[{} / {}] {}",
|
||||
self.status_code.as_u16(),
|
||||
self.kind,
|
||||
self.message
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for Error {}
|
||||
|
||||
impl From<Error> for ErrorBody {
|
||||
fn from(error: Error) -> Self {
|
||||
Self {
|
||||
|
Loading…
x
Reference in New Issue
Block a user