use axum::{Router, response::Response, http::{StatusCode, self, Request}, middleware::{Next, self}}; use crate::config::CONFIG; pub mod users; pub mod pagination; pub mod languages; pub mod donate_notifications; async fn auth(req: Request, next: Next) -> Result { let auth_header = req.headers() .get(http::header::AUTHORIZATION) .and_then(|header| header.to_str().ok()); let auth_header = if let Some(auth_header) = auth_header { auth_header } else { return Err(StatusCode::UNAUTHORIZED); }; if auth_header != CONFIG.api_key { return Err(StatusCode::UNAUTHORIZED); } Ok(next.run(req).await) } pub fn get_router() -> Router { Router::new() .nest("/users/", users::get_router()) .nest("/languages/", languages::get_router()) .nest("/donate_notifications/", donate_notifications::get_router()) .layer(middleware::from_fn(auth)) }