From 1a2e951a54f87a56f1a9fa74b4897aa744874eb2 Mon Sep 17 00:00:00 2001 From: peterrabbit <peterrabbit@msi.home> Date: Sat, 3 Sep 2022 11:47:51 +0200 Subject: [PATCH] website mutex --- src/main.rs | 15 ++++++++------- src/service/page.rs | 7 ++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index ca8ab2a..c05f55e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ mod testing; mod tls_config; mod website; use actix_files::Files; -use actix_web::{App, HttpServer}; +use actix_web::{web, App, HttpServer}; use actix_web_lab::middleware::RedirectHttps; use app::AppState; use static_files::StaticFilesManager; @@ -31,19 +31,20 @@ async fn main() -> std::io::Result<()> { let srv_conf = tls_config(&app_state.config); let static_dir = static_files_manager.dir.clone(); - let mut_static_files_manager = - actix_web::web::Data::new(std::sync::Mutex::new(static_files_manager)); + let mut_static_files_manager = web::Data::new(std::sync::Mutex::new(static_files_manager)); - let app_state = actix_web::web::Data::new(std::sync::Mutex::new(app_state)); + let app_state = web::Data::new(std::sync::Mutex::new(app_state)); + + let mut_website = web::Data::new(std::sync::Mutex::new(website)); HttpServer::new(move || { App::new() .wrap(actix_web::middleware::Logger::default()) .wrap(actix_web::middleware::Compress::default()) .wrap(RedirectHttps::default().to_port(port_tls)) - .app_data(actix_web::web::Data::clone(&app_state)) - .app_data(actix_web::web::Data::clone(&mut_static_files_manager)) - .app_data(actix_web::web::Data::new(website.clone())) + .app_data(web::Data::clone(&app_state)) + .app_data(web::Data::clone(&mut_static_files_manager)) + .app_data(web::Data::clone(&mut_website)) .service(Files::new("/static/", &static_dir)) .service(service::files::favicon) .service(service::page) diff --git a/src/service/page.rs b/src/service/page.rs index 7a5ddea..c70a9ef 100644 --- a/src/service/page.rs +++ b/src/service/page.rs @@ -3,8 +3,13 @@ use actix_web::{get, web, HttpResponse, Responder}; use std::path::PathBuf; #[get("/{pth:.*}")] -pub async fn page(website: web::Data<WebSite>, pth: web::Path<PathBuf>) -> impl Responder { +pub async fn page( + website: web::Data<std::sync::Mutex<WebSite>>, + pth: web::Path<PathBuf>, +) -> impl Responder { + let website = website.lock().unwrap(); let pth = pth.into_inner(); + match website.get_page_by_url(&pth) { Some(page) => HttpResponse::Ok().body(page.html.to_string()), None => HttpResponse::NotFound().body(format!("Not found {}", pth.display())), -- GitLab