removed StatusCode, use Status directly

This commit is contained in:
Philippe Loctaux 2023-03-01 22:54:13 +01:00
parent 65bfd02fbf
commit 49a46acef3
4 changed files with 14 additions and 33 deletions

View file

@ -1,20 +1,20 @@
use super::{Error, StatusCode};
use super::Error;
use rocket::http::Status;
use rocket::{catch, catchers, Build, Request, Rocket};
#[catch(404)]
fn not_found(req: &Request) -> Error {
Error::new(StatusCode::NotFound, req.uri())
Error::new(Status::NotFound, req.uri())
}
#[catch(500)]
fn internal_server_error(req: &Request) -> Error {
Error::new(StatusCode::InternalServerError, req.uri())
Error::new(Status::InternalServerError, req.uri())
}
#[catch(default)]
fn default(status: Status, req: &Request) -> Error {
Error::new(StatusCode::Unknown(status), req.uri())
Error::new(status, req.uri())
}
pub fn register(rocket_builder: Rocket<Build>) -> Rocket<Build> {

View file

@ -1,34 +1,33 @@
pub(super) mod catchers;
mod conversion;
mod responder;
mod status_code;
use self::status_code::StatusCode;
use rocket::http::Status;
use rocket_dyn_templates::{context, Template};
pub struct Error {
status: StatusCode,
status: Status,
template: Template,
}
impl Error {
fn new<M: std::fmt::Display>(status: StatusCode, message: M) -> Self {
fn new<M: std::fmt::Display>(status: Status, message: M) -> Self {
Self {
status,
template: Template::render(
"error",
context! {
title: format!("{} Error", status.http_code().code),
title: format!("{} Error", status.code),
message: message.to_string(),
version: env!("CARGO_PKG_VERSION"),
http_code: status.http_code().code,
http_reason: status.http_code().reason_lossy()
http_code: status.code,
http_reason: status.reason_lossy()
},
),
}
}
pub fn internal_server_error<E: std::error::Error>(error: E) -> Self {
Self::new(StatusCode::InternalServerError, error)
Self::new(Status::InternalServerError, error)
}
}

View file

@ -1,6 +1,6 @@
use rocket::{response, Request, Response};
use rocket::response::Responder;
use super::Error;
use rocket::response::Responder;
use rocket::{response, Request, Response};
impl<'r, 'o: 'r> Responder<'r, 'o> for Error {
fn respond_to(self, req: &Request) -> response::Result<'o> {
@ -9,7 +9,7 @@ impl<'r, 'o: 'r> Responder<'r, 'o> for Error {
// Set status for final response
Response::build_from(template_response)
.status(self.status.http_code())
.status(self.status)
.ok()
}
}

View file

@ -1,18 +0,0 @@
use rocket::http::Status;
#[derive(Copy, Clone)]
pub(super) enum StatusCode {
NotFound,
InternalServerError,
Unknown(Status),
}
impl StatusCode {
pub fn http_code(self) -> Status {
match self {
StatusCode::NotFound => Status::NotFound,
StatusCode::InternalServerError => Status::InternalServerError,
StatusCode::Unknown(status) => status,
}
}
}