summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..c328a44
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,29 @@
+mod config;
+mod errors;
+mod handlers;
+mod models;
+
+pub use errors::{Error, Result};
+
+use std::net::{IpAddr, Ipv6Addr, SocketAddr};
+
+use axum::{Router, routing::get};
+use tokio::net::TcpListener;
+use tower_http::services::ServeFile;
+
+pub async fn run() -> Result<()> {
+ let config = config::Config::new()?;
+
+ let app = Router::new()
+ .nest_service("/static/style.css", ServeFile::new(&config.style_file))
+ .nest_service("/static/favicon.svg", ServeFile::new(&config.favicon_file))
+ .route("/", get(handlers::handler))
+ .with_state(config.clone());
+
+ let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), config.port);
+ let listener = TcpListener::bind(socket).await?;
+
+ axum::serve(listener, app).await?;
+
+ Ok(())
+}