use std::sync::Arc; use tokio::sync::RwLock; use actix_web::{dev::Server, web::Data, App, HttpServer}; use crate::args::ServerConfig; use super::routes::{healthcheck, index, login}; pub fn create(args: ServerConfig, token: Arc>>) -> anyhow::Result { let addr = (args.host.clone(), args.port); let server = HttpServer::new(move || { App::new() .wrap(actix_web::middleware::Logger::new( "\"%r\" \"-\" \"%s\" \"%a\" \"%D\"", )) .app_data(Data::new(token.clone())) .app_data(Data::new(args.clone())) .service(login) .service(index) .service(healthcheck) .service(actix_files::Files::new("/static", args.static_dir.clone())) }) .bind(addr)? .workers(1) .run(); Ok(server) }