29 lines
851 B
Rust
29 lines
851 B
Rust
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<RwLock<Option<String>>>) -> anyhow::Result<Server> {
|
|
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)
|
|
}
|