use axum::routing::get;
use axum::Router;
use http::header::{ACCEPT, ORIGIN};
use http::Method;
use tower_http::cors::{Any, CorsLayer};
use tower_http::limit::RequestBodyLimitLayer;
mod data_source;
pub mod identity;
pub mod liveness;
mod readiness;
pub mod version;
use crate::ServiceState;
const HEALTHCHECK_REQUEST_SIZE_LIMIT: usize = 1_024;
pub fn router(state: ServiceState) -> Router<ServiceState> {
let cors_layer = CorsLayer::new()
.allow_methods(vec![Method::GET])
.allow_headers(vec![ACCEPT, ORIGIN])
.allow_origin(Any)
.allow_credentials(false);
Router::new()
.route("/livez", get(liveness::handler))
.route("/readyz", get(readiness::handler))
.route("/version", get(version::handler))
.route("/identity", get(identity::handler))
.with_state(state)
.layer(cors_layer)
.layer(RequestBodyLimitLayer::new(HEALTHCHECK_REQUEST_SIZE_LIMIT))
}