sword_layers/
not_found.rs1use crate::ResponseFnMapper;
2use axum::{
3 http::StatusCode,
4 response::{IntoResponse, Response},
5};
6use axum_responses::JsonResponse;
7use tower::{ServiceBuilder, util::MapResponseLayer};
8use tower_layer::{Identity, Stack};
9
10pub struct NotFoundLayer;
11
12impl NotFoundLayer {
13 pub fn new() -> ServiceBuilder<Stack<MapResponseLayer<ResponseFnMapper>, Identity>> {
14 ServiceBuilder::new().map_response(|r: Response| {
15 if r.status() != StatusCode::NOT_FOUND {
16 return r;
17 }
18
19 JsonResponse::NotFound()
20 .message("The requested resource was not found.")
21 .into_response()
22 })
23 }
24}