From 26f14273c68e12a7eb98ca7869791952e036f1e2 Mon Sep 17 00:00:00 2001 From: Pijar <pierre.jarriges@tutanota.com> Date: Wed, 25 May 2022 15:06:43 +0200 Subject: [PATCH] dyn_sitemap.xml --- .gitignore | 2 +- public/standard/robots.txt | 2 ++ public/standard/sitemap.xml | 40 ++++++++++++++++++++----------------- src/service/articles.rs | 2 +- src/static_view.rs | 32 ++++++++++++++++++++++++----- 5 files changed, 53 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index db6a2a9..ff96692 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ target public/**/*.js public/**/view/* public/standard/test_sitemap.xml -public/standard/sitemap.xml \ No newline at end of file +public/standard/dyn_sitemap.xml \ No newline at end of file diff --git a/public/standard/robots.txt b/public/standard/robots.txt index 003d94f..ebedbc1 100644 --- a/public/standard/robots.txt +++ b/public/standard/robots.txt @@ -1,2 +1,4 @@ User-agent: * Sitemap: https://kuadrado-software.fr/sitemap.xml +Sitemap: https://kuadrado-software.fr/dyn_sitemap.xml + diff --git a/public/standard/sitemap.xml b/public/standard/sitemap.xml index 1e75f57..dca1ebf 100644 --- a/public/standard/sitemap.xml +++ b/public/standard/sitemap.xml @@ -1,19 +1,23 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> - <url> - <loc>https://kuadrado-software.fr</loc> - <lastmod>2021-11-19</lastmod> - </url> - <url> - <loc>https://kuadrado-software.fr/games/</loc> - <lastmod>2021-11-19</lastmod> - </url> - <url> - <loc>https://kuadrado-software.fr/education/</loc> - <lastmod>2021-11-19</lastmod> - </url> - <url> - <loc>https://kuadrado-software.fr/software-development/</loc> - <lastmod>2021-11-19</lastmod> - </url> -</urlset> + <url> + <loc>https://kuadrado-software.fr/</loc> + <lastmod>2022-05-25T00:00:00+00:00</lastmod> + </url> + <url> + <loc>https://kuadrado-software.fr/games/</loc> + <lastmod>2022-05-25T00:00:00+00:00</lastmod> + </url> + <url> + <loc>https://kuadrado-software.fr/education/</loc> + <lastmod>2022-05-25T00:00:00+00:00</lastmod> + </url> + <url> + <loc>https://kuadrado-software.fr/software-development/</loc> + <lastmod>2022-05-25T00:00:00+00:00</lastmod> + </url> + <url> + <loc>https://localhost/games/view/fr/glitch/</loc> + <lastmod>2022-05-25T00:00:00+00:00</lastmod> + </url> +</urlset> \ No newline at end of file diff --git a/src/service/articles.rs b/src/service/articles.rs index 6133cf2..b9e4ee4 100644 --- a/src/service/articles.rs +++ b/src/service/articles.rs @@ -118,7 +118,7 @@ pub async fn post_article( } } _ => { - return HttpResponse::InternalServerError().body("Error creating article page") + return HttpResponse::InternalServerError().body("Error creating article page"); } } HttpResponse::Created().json(res) diff --git a/src/static_view.rs b/src/static_view.rs index 3d3436c..059f001 100644 --- a/src/static_view.rs +++ b/src/static_view.rs @@ -118,6 +118,21 @@ pub fn delete_static_view( Ok(()) } +fn init_sitemap(sitemap_path: &PathBuf) -> Result<(), String> { + File::create(sitemap_path).expect("Couldn't create sitemap"); + let sm = File::open(sitemap_path).unwrap(); + let writer = SiteMapWriter::new(&sm); + match writer.start_urlset() { + Ok(url_w) => { + if let Err(e) = url_w.end() { + return Err(format!("Couldn't write new sitemap closing tags. {}", e)); + } + Ok(()) + } + Err(e) => Err(format!("Couldn't create new sitemap urlset. {}", e)), + } +} + fn update_sitemap( app_state: &AppState, uri: &Option<String>, @@ -132,17 +147,24 @@ fn update_sitemap( if value.eq("testing") { String::from("test_sitemap.xml") } else { - String::from("sitemap.xml") + String::from("dyn_sitemap.xml") } } - Err(_) => String::from("sitemap.xml"), + Err(_) => String::from("dyn_sitemap.xml"), }; let standard_dir_pth = app_state.env.public_dir.join("standard"); let uri = uri.as_ref().unwrap().to_owned(); - let sitemap = - File::open(standard_dir_pth.join(&sitemap_name)).expect("Couldn't open file sitemap.xml"); + let sitemap_path = standard_dir_pth.join(&sitemap_name); + + if !sitemap_path.exists() { + if let Err(e) = init_sitemap(&sitemap_path) { + return Err(e); + } + } + + let sitemap = File::open(&sitemap_path).expect("Couldn't open file sitemap.xml"); let mut urls = Vec::new(); @@ -155,7 +177,7 @@ fn update_sitemap( let updated_sitemap = File::create(standard_dir_pth.join("tmp_sitemap.xml")) .expect("Couldn't create temporary sitemap"); - let writer = SiteMapWriter::new(updated_sitemap); + let writer = SiteMapWriter::new(&updated_sitemap); let mut url_writer = writer .start_urlset() .expect("Unable to write sitemap urlset"); -- GitLab