summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorSerguey Parkhomovsky <xindigo@gmail.com>2026-03-16 21:56:22 -0700
committerSerguey Parkhomovsky <xindigo@gmail.com>2026-03-16 21:56:22 -0700
commitba442bc1d4955812fd75705fedf378a5d20de631 (patch)
treefd8e8f2b272463287f112586d3fb1b922e78a358 /src/main.rs
parentf2f257e9e1f1e2a6fefd5df00a317ae721031d5a (diff)
add axum
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs22
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())
+}