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