From bb85374b79086cd8efde24d23a1bffeb97cae26b Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Wed, 5 Apr 2023 23:08:09 -0400 Subject: new c version --- src/web/mod.rs | 82 ---------------------------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 src/web/mod.rs (limited to 'src/web/mod.rs') diff --git a/src/web/mod.rs b/src/web/mod.rs deleted file mode 100644 index 530a3f9..0000000 --- a/src/web/mod.rs +++ /dev/null @@ -1,82 +0,0 @@ -use std::net::{IpAddr, SocketAddr, TcpListener}; -use std::time::Duration; - -use axum::routing::get; -use axum::{Extension, Router}; -use moka::future::Cache; -use tokio::task::JoinHandle; -use tower_cookies::CookieManagerLayer; -use tracing::{error, info}; - -use crate::config::Config; -use crate::database::Database; -use crate::Result; - -mod api; -mod extract; -mod file; -mod http; -mod pages; - -pub struct WebServer { - config: Config, - database: Database, - addr: SocketAddr, -} - -impl WebServer { - pub async fn new(config: Config, database: Database) -> Result { - let addr = format!("[::]:{}", config.web_port).parse::()?; - Ok(Self { - config, - database, - addr, - }) - } - - pub async fn run(&self) -> Result> { - let config = self.config.clone(); - let database = self.database.clone(); - let listener = TcpListener::bind(self.addr)?; - - info!( - "Listening for HTTP traffic on [::]:{}", - self.config.web_port - ); - - let app = Self::router(config, database); - let server = axum::Server::from_tcp(listener)?; - - let web_handle = tokio::spawn(async move { - if let Err(err) = server - .serve(app.into_make_service_with_connect_info::()) - .await - { - error!("{err}"); - } - }); - - Ok(web_handle) - } - - fn router(config: Config, database: Database) -> Router { - let cache: Cache = Cache::builder() - .time_to_live(Duration::from_secs(60 * 15)) - .max_capacity(config.dns_cache_size) - .build(); - - Router::new() - .nest("/", pages::router()) - .nest("/api", api::router()) - .layer(Extension(config)) - .layer(Extension(cache)) - .layer(Extension(database)) - .layer(CookieManagerLayer::new()) - .route("/js/*path", get(file::js)) - .route("/css/*path", get(file::css)) - .route("/fonts/*path", get(file::fonts)) - .route("/image/*path", get(file::image)) - .route("/favicon.ico", get(file::favicon)) - .route("/robots.txt", get(file::robots)) - } -} -- cgit v1.2.3-freya