use axum::extract::Path; use axum::{Router, middleware, routing::get}; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::time; mod unlock; #[tokio::main] async fn main() { let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 7878); let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); println!("listening on {}", addr); let now = time::Instant::now(); let daily = time::Duration::from_secs(24 * 60 * 60); let state = unlock::Unlock::new(now, daily); let app = Router::new() .route("/day/{id}", get(handler)) .route_layer(middleware::from_fn_with_state( state.clone(), unlock::unlock, )); axum::serve(listener, app).await.unwrap(); } async fn handler(Path(id): Path) -> String { format!("hello day {id}") }