diff --git a/src/types/error_code.rs b/src/types/error_code.rs new file mode 100644 index 0000000..6febaa8 --- /dev/null +++ b/src/types/error_code.rs @@ -0,0 +1,36 @@ +#[non_exhaustive] +#[derive(Clone, Debug)] +pub enum ErrorCode { + Forbidden, + UnknownToken, + MissingToken, + BadJson, + NotJson, + NotFound, + LimitExceeded, + Unknown, + UserInUse, + InvalidUsername, + Exclusive, +} + +impl serde::Serialize for ErrorCode { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(match self { + ErrorCode::Forbidden => "M_FORBIDDEN", + ErrorCode::UnknownToken => "M_UNKNOWN_TOKEN", + ErrorCode::MissingToken => "M_MISSING_TOKEN", + ErrorCode::BadJson => "M_BAD_JSON", + ErrorCode::NotJson => "M_NOT_JSON", + ErrorCode::NotFound => "M_NOT_FOUND", + ErrorCode::LimitExceeded => "M_LIMIT_EXCEEDED", + ErrorCode::Unknown => "M_UNKNOWN", + ErrorCode::UserInUse => "M_USER_IN_USE", + ErrorCode::InvalidUsername => "M_INVALID_USERNAME", + ErrorCode::Exclusive => "M_EXCLUSIVE", + }) + } +}