From 5c7c57264171a8ce52e0145d813e0c9d60843b2c Mon Sep 17 00:00:00 2001 From: J-onasJones Date: Mon, 1 Jan 2024 17:18:08 +0100 Subject: [PATCH] Added error 501 --- src/error_responses.rs | 4 ++++ src/server.rs | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/error_responses.rs b/src/error_responses.rs index 792e4d5..5a8b897 100644 --- a/src/error_responses.rs +++ b/src/error_responses.rs @@ -26,3 +26,7 @@ impl warp::reject::Reject for UnauthorizedError {} pub struct ForbiddenError; impl warp::reject::Reject for ForbiddenError {} +#[derive(Debug)] +pub struct NotImplementedError; +impl warp::reject::Reject for NotImplementedError {} + diff --git a/src/server.rs b/src/server.rs index 5567503..7aa133e 100644 --- a/src/server.rs +++ b/src/server.rs @@ -5,7 +5,7 @@ use reqwest::StatusCode; use warp::Filter; use warp::reply::Reply; -use crate::error_responses::{ErrorMessage, InternalServerError, BadRequestError, NotFoundError}; +use crate::error_responses::{ErrorMessage, InternalServerError, BadRequestError, NotFoundError, NotImplementedError}; use crate::v1::get_v1_routes; use crate::{Logger, parse_ip}; @@ -24,7 +24,7 @@ pub async fn serve() { let routes = favicon.or(get_v1_routes()) .recover(handle_rejection); - + async fn handle_rejection(err: warp::Rejection) -> Result { let (code, message) = if err.find::().is_some() { (StatusCode::INTERNAL_SERVER_ERROR, "Internal Server Error") @@ -32,6 +32,8 @@ pub async fn serve() { (StatusCode::BAD_REQUEST, "Bad Request") } else if err.is_not_found() || err.find::().is_some() { (StatusCode::NOT_FOUND, "Not Found") + } else if err.find::().is_some() { + (StatusCode::NOT_IMPLEMENTED, "Not Implemented") } else { (StatusCode::INTERNAL_SERVER_ERROR, "Unhandled Rejection") // Default case }; @@ -40,7 +42,7 @@ pub async fn serve() { code: code.as_u16(), message: message.into(), }); - + Ok(warp::reply::with_status(json, code)) }