Homebrew RSS reader server
at main 32 lines 1.1 kB view raw
1use axum::middleware; 2use axum::routing::get; 3use axum::Router; 4use sqlx::SqlitePool; 5use tokio::sync::broadcast; 6 7use crate::api; 8 9#[derive(Clone)] 10pub struct AppState { 11 pub pool: SqlitePool, 12 pub api_key: String, 13 /// Send `Some(feed_id)` for single-feed refresh, `None` for all feeds. 14 pub refresh_trigger: Option<broadcast::Sender<Option<i64>>>, 15} 16 17pub fn router(state: AppState) -> Router { 18 let v1 = api::miniflux::v1_router().layer(middleware::from_fn_with_state( 19 state.clone(), 20 api::miniflux::auth::auth_middleware, 21 )); 22 23 Router::new() 24 .nest("/v1", v1) 25 // Health/readiness endpoints (unauthenticated, root-level) 26 .route("/healthcheck", get(api::miniflux::handlers::healthcheck)) 27 .route("/liveness", get(api::miniflux::handlers::healthcheck)) 28 .route("/healthz", get(api::miniflux::handlers::healthcheck)) 29 .route("/readiness", get(api::miniflux::handlers::healthcheck)) 30 .route("/readyz", get(api::miniflux::handlers::healthcheck)) 31 .with_state(state) 32}