From ba442bc1d4955812fd75705fedf378a5d20de631 Mon Sep 17 00:00:00 2001 From: Serguey Parkhomovsky Date: Mon, 16 Mar 2026 21:56:22 -0700 Subject: add axum --- src/lib.rs | 6 +++--- src/main.rs | 22 +++++++++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 7c2aea7..aa05dd9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ -use serde::Deserialize; +use serde::{Deserialize, Serialize}; -#[derive(Debug, Default)] +#[derive(Debug, Default, Serialize, Clone)] pub enum PrintStatus { #[default] Unknown, @@ -10,7 +10,7 @@ pub enum PrintStatus { Finished, } -#[derive(Debug, Default)] +#[derive(Debug, Default, Serialize, Clone)] pub struct PrinterState { pub bed_temp: f32, pub status: PrintStatus, 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>>>, +) -> Json> { + let lock = state.lock().await; + Json(lock.clone()) +} -- cgit v1.2.3