use thiserror::Error;
use crate::response::{Response, ResponseBody};
#[derive(Error, Debug)]
pub enum Error {
#[error("not found: {0}")]
NotFound(String),
#[error("bad request: {0}")]
BadRequest(String),
#[error("internal error: {0}")]
Internal(String),
}
pub type Result<T> = std::result::Result<T, Error>;
impl Error {
pub fn into_response(self) -> Response {
let (status, body) = match self {
Error::NotFound(m) => (404u16, m),
Error::BadRequest(m)=> (400u16, m),
Error::Internal(m) => (500u16, m),
};
Response { status, body: ResponseBody::Text(body), headers: vec![] }
}
}