diff options
| author | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-16 21:56:22 -0700 |
|---|---|---|
| committer | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-16 21:56:22 -0700 |
| commit | ba442bc1d4955812fd75705fedf378a5d20de631 (patch) | |
| tree | fd8e8f2b272463287f112586d3fb1b922e78a358 /src/main.rs | |
| parent | f2f257e9e1f1e2a6fefd5df00a317ae721031d5a (diff) | |
add axum
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 29df56d..0a24ed6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +use axum::{Json, Router, extract::State, routing::get}; use native_tls::TlsConnector; use printstats::*; use reqwest::Client; @@ -84,7 +85,10 @@ async fn main() { Ok(msg) => { let entry = lock.entry(name.clone()).or_default(); extract_status_from_bambu(&msg, entry); - println!("Updated state for {}: {:?}", &name, p.payload); + println!( + "Updated state for {}: {:?}", + &name, p.payload + ); } Err(e) => { eprintln!("Failed to deserialize BambuStatus: {}", e); @@ -103,6 +107,15 @@ async fn main() { } } + tracing_subscriber::fmt::init(); + + let app = Router::new() + .route("/", get(root)) + .with_state(Arc::clone(&state)); + + let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); + let _ = axum::serve(listener, app).await; + loop { tokio::select! { _ = tokio::signal::ctrl_c() => { @@ -119,3 +132,10 @@ async fn main() { } } } + +async fn root( + State(state): State<Arc<Mutex<HashMap<String, PrinterState>>>>, +) -> Json<HashMap<String, PrinterState>> { + let lock = state.lock().await; + Json(lock.clone()) +} |
