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::http::Status;
|
||||||
use rocket::{catch, catchers, Build, Request, Rocket};
|
use rocket::{catch, catchers, Build, Request, Rocket};
|
||||||
|
|
||||||
#[catch(404)]
|
#[catch(404)]
|
||||||
fn not_found(req: &Request) -> Error {
|
fn not_found(req: &Request) -> Error {
|
||||||
Error::new(StatusCode::NotFound, req.uri())
|
Error::new(Status::NotFound, req.uri())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[catch(500)]
|
#[catch(500)]
|
||||||
fn internal_server_error(req: &Request) -> Error {
|
fn internal_server_error(req: &Request) -> Error {
|
||||||
Error::new(StatusCode::InternalServerError, req.uri())
|
Error::new(Status::InternalServerError, req.uri())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[catch(default)]
|
#[catch(default)]
|
||||||
fn default(status: Status, req: &Request) -> Error {
|
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> {
|
pub fn register(rocket_builder: Rocket<Build>) -> Rocket<Build> {
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,33 @@
|
||||||
pub(super) mod catchers;
|
pub(super) mod catchers;
|
||||||
mod conversion;
|
mod conversion;
|
||||||
mod responder;
|
mod responder;
|
||||||
mod status_code;
|
|
||||||
|
|
||||||
use self::status_code::StatusCode;
|
use rocket::http::Status;
|
||||||
use rocket_dyn_templates::{context, Template};
|
use rocket_dyn_templates::{context, Template};
|
||||||
|
|
||||||
pub struct Error {
|
pub struct Error {
|
||||||
status: StatusCode,
|
status: Status,
|
||||||
template: Template,
|
template: Template,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Error {
|
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 {
|
Self {
|
||||||
status,
|
status,
|
||||||
template: Template::render(
|
template: Template::render(
|
||||||
"error",
|
"error",
|
||||||
context! {
|
context! {
|
||||||
title: format!("{} Error", status.http_code().code),
|
title: format!("{} Error", status.code),
|
||||||
message: message.to_string(),
|
message: message.to_string(),
|
||||||
version: env!("CARGO_PKG_VERSION"),
|
version: env!("CARGO_PKG_VERSION"),
|
||||||
http_code: status.http_code().code,
|
http_code: status.code,
|
||||||
http_reason: status.http_code().reason_lossy()
|
http_reason: status.reason_lossy()
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn internal_server_error<E: std::error::Error>(error: E) -> Self {
|
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 super::Error;
|
||||||
|
use rocket::response::Responder;
|
||||||
|
use rocket::{response, Request, Response};
|
||||||
|
|
||||||
impl<'r, 'o: 'r> Responder<'r, 'o> for Error {
|
impl<'r, 'o: 'r> Responder<'r, 'o> for Error {
|
||||||
fn respond_to(self, req: &Request) -> response::Result<'o> {
|
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
|
// Set status for final response
|
||||||
Response::build_from(template_response)
|
Response::build_from(template_response)
|
||||||
.status(self.status.http_code())
|
.status(self.status)
|
||||||
.ok()
|
.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