use axum::{Router, routing::get};
use std::net::SocketAddr;
use tokio::net::TcpListener;
use tower_http::services::{ServeDir, ServeFile};
const SERVER_URL: &str = "127.0.0.1:6060";
async fn start_server() {
let serve_dir = ServeDir::new("assets").fallback(ServeFile::new("assets/index.html"));
let router = Router::new().route("/", get(|| async { "Hello, World!" })).fallback_service(serve_dir);
println!("Starting server at '{SERVER_URL}'...");
let rest_addr: SocketAddr = SERVER_URL.parse().unwrap();
let rest_listener = TcpListener::bind(rest_addr).await.unwrap();
axum::serve(rest_listener, router.into_make_service_with_connect_info::<SocketAddr>()).await.unwrap();
}
#[tokio::main]
async fn main() {
tokio::spawn(async move { start_server().await });
open::that(format!("http://{SERVER_URL}/assets/index.html")).expect("Failed to open website");
std::future::pending::<()>().await;
}