2026-02-17 12:15:46 -05:00
|
|
|
use axum::{Json, Router, http::StatusCode, routing::get};
|
|
|
|
|
use chrono::Local;
|
2026-02-17 09:34:22 -05:00
|
|
|
use log::info;
|
|
|
|
|
use tower_http::services::ServeDir;
|
|
|
|
|
|
2026-02-17 12:15:46 -05:00
|
|
|
use crate::model::devices::Device;
|
|
|
|
|
|
2026-02-17 09:34:22 -05:00
|
|
|
pub async fn serve() -> Result<(), String> {
|
|
|
|
|
info!("Starting web server");
|
|
|
|
|
let static_files = ServeDir::new("./web");
|
|
|
|
|
|
|
|
|
|
let router = Router::new()
|
|
|
|
|
.route("/", get(|| async { "hello" }))
|
2026-02-17 12:15:46 -05:00
|
|
|
.route("/devices", get(get_devices))
|
2026-02-17 09:34:22 -05:00
|
|
|
.nest_service("/web", static_files);
|
|
|
|
|
info!("Server running at http://0.0.0.0:3000");
|
|
|
|
|
// Start the server
|
|
|
|
|
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
|
|
|
|
|
axum::serve(listener, router).await.unwrap();
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
2026-02-17 12:15:46 -05:00
|
|
|
|
|
|
|
|
async fn get_devices() -> Result<Json<Vec<Device>>, StatusCode> {
|
|
|
|
|
let mut devices = Vec::new();
|
|
|
|
|
|
|
|
|
|
devices.push(Device {
|
|
|
|
|
mac_address: "mac".to_string(),
|
|
|
|
|
ipv4_address: "ip".to_string(),
|
|
|
|
|
vendor: "vendor".to_string(),
|
|
|
|
|
last_seen: Local::now().to_utc(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Ok(Json(devices))
|
|
|
|
|
}
|