removed StatusCode, use Status directly
This commit is contained in:
parent
65bfd02fbf
commit
49a46acef3
4 changed files with 14 additions and 33 deletions
|
|
@ -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> {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue