1
0
mirror of https://github.com/scsibug/nostr-rs-relay.git synced 2025-03-22 03:22:27 -04:00

51 lines
1.2 KiB
Rust
Raw Normal View History

//! Error handling.
use std::result;
use thiserror::Error;
use tungstenite::error::Error as WsError;
pub type Result<T, E = Error> = result::Result<T, E>;
#[derive(Error, Debug)]
pub enum Error {
#[error("Protocol parse error")]
ProtoParseError,
#[error("Connection error")]
ConnError,
#[error("Client write error")]
ConnWriteError,
#[error("EVENT parse failed")]
EventParseFailed,
#[error("ClOSE message parse failed")]
CloseParseFailed,
#[error("Event validation failed")]
EventInvalid,
// this should be used if the JSON is invalid
#[error("JSON parsing failed")]
JsonParseFailed(serde_json::Error),
#[error("WebSocket proto error")]
WebsocketError(WsError),
#[error("Command unknown")]
CommandUnknownError,
#[error("SQL error")]
SqlError(rusqlite::Error),
}
impl From<rusqlite::Error> for Error {
fn from(r: rusqlite::Error) -> Self {
Error::SqlError(r)
}
}
impl From<serde_json::Error> for Error {
fn from(r: serde_json::Error) -> Self {
Error::JsonParseFailed(r)
}
}
impl From<WsError> for Error {
fn from(r: WsError) -> Self {
Error::WebsocketError(r)
}
}