api: Add catchers

- Added catchers for 404, 422 and 500

Signed-off-by: supercmmetry <vishaals2000@gmail.com>
This commit is contained in:
supercmmetry 2020-06-26 08:38:32 +05:30
parent de741f451e
commit 0de8fb33da
No known key found for this signature in database
GPG Key ID: 8E60EF28A328E40D
2 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,34 @@
use rocket::Rocket;
use rocket::response::status;
use rocket::http::Status;
use rocket_contrib::json::Json;
use serde_json::Value;
#[catch(404)]
fn not_found() -> status::Custom<Json<Value>> {
status::Custom(Status::NotFound, Json(json!({
"err":"route not found",
"msg": "The given route does not exist"
})))
}
#[catch(422)]
fn unprocessable_entity() -> status::Custom<Json<Value>> {
status::Custom(Status::UnprocessableEntity, Json(json!({
"err":"failed to process entity",
"msg": "The given object could not be processed. This could be due to sending \
malformed or incomplete JSON objects in the request body."
})))
}
#[catch(500)]
fn internal_server_error() -> status::Custom<Json<Value>> {
status::Custom(Status::NotFound, Json(json!({
"err":"internal server error",
"msg": "Something went wrong, try again"
})))
}
pub fn fuel(rocket: Rocket) -> Rocket {
rocket.register(catchers![not_found, unprocessable_entity, internal_server_error])
}

View File

@ -46,6 +46,7 @@ fn main() {
let mut rocket = rocket::ignite(); let mut rocket = rocket::ignite();
rocket = api::routes::fuel(rocket); rocket = api::routes::fuel(rocket);
rocket = api::catchers::fuel(rocket);
rocket.manage(utils::db::pool()) rocket.manage(utils::db::pool())
.manage(logger) .manage(logger)