use viz_core::{IntoResponse, Response, StatusCode, ThisError};
#[derive(ThisError, Debug)]
pub enum Error {
#[error("method not allowed")]
MethodNotAllowed,
#[error("invalid path")]
InvalidPath,
#[error("precondition failed")]
PreconditionFailed,
#[error("range could not be satisfied")]
RangeUnsatisfied(u64),
#[error("io: {0}")]
Io(#[from] std::io::Error),
}
impl IntoResponse for Error {
fn into_response(self) -> Response {
(
match self {
Error::MethodNotAllowed => StatusCode::METHOD_NOT_ALLOWED,
Error::InvalidPath => StatusCode::BAD_REQUEST,
Error::PreconditionFailed => StatusCode::PRECONDITION_FAILED,
Error::RangeUnsatisfied(_) => StatusCode::RANGE_NOT_SATISFIABLE,
Error::Io(_) => StatusCode::INTERNAL_SERVER_ERROR,
},
self.to_string(),
)
.into_response()
}
}
impl From<Error> for viz_core::Error {
fn from(e: Error) -> Self {
e.into_error()
}
}