Files
YANPM/apps/api/src/middlewares.rs

40 lines
961 B
Rust

pub mod request_info;
pub mod require_auth;
use std::{sync::Arc, time::Duration};
use axum::{
BoxError, Router,
error_handling::HandleErrorLayer,
http::{Method, StatusCode, Uri},
};
use tower::{ServiceBuilder, timeout::TimeoutLayer};
use tracing::warn;
use crate::routes::AppState;
pub const TIMEOUT_DURATION_SECS: u64 = 30;
pub fn apply_root_middleware(router: Router, _state: Arc<AppState>) -> Router {
let timeout_layer = TimeoutLayer::new(Duration::from_secs(TIMEOUT_DURATION_SECS));
let service_builder = ServiceBuilder::new()
.layer(HandleErrorLayer::new(handle_timeout_error))
.layer(timeout_layer);
router.layer(service_builder)
}
pub async fn handle_timeout_error(
method: Method,
uri: Uri,
//
err: BoxError,
) -> (StatusCode, String) {
warn!("`{method} {uri}` failed with {err}");
(
StatusCode::INTERNAL_SERVER_ERROR,
"Internal server error".to_string(),
)
}