From 514297566d06d67556d738b918e0755b93800c29 Mon Sep 17 00:00:00 2001 From: BluJ Date: Tue, 6 Dec 2022 10:37:07 -0700 Subject: [PATCH] fix: Ensure that during migration we make the urls have a trailing slash This is to fix a bug in the UI --- backend/src/version/v0_3_3.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/backend/src/version/v0_3_3.rs b/backend/src/version/v0_3_3.rs index 6bdc767f1..194898d06 100644 --- a/backend/src/version/v0_3_3.rs +++ b/backend/src/version/v0_3_3.rs @@ -1,5 +1,6 @@ use async_trait::async_trait; use emver::VersionRange; +use regex::Regex; use serde_json::{json, Value}; use super::v0_3_0::V0_3_0_COMPAT; @@ -47,7 +48,7 @@ impl VersionT for Version { if let Value::Object(known_hosts) = known_hosts { for (_id, value) in known_hosts { if let Value::String(url) = &value["url"] { - ui["marketplace"]["known-hosts"][url] = json!({}); + ui["marketplace"]["known-hosts"][ensure_trailing_slashes(url)] = json!({}); } } } @@ -101,6 +102,32 @@ impl VersionT for Version { } } +fn ensure_trailing_slashes(url: &str) -> String { + lazy_static::lazy_static! { + static ref REG: Regex = Regex::new(r".*/$").unwrap(); + } + if REG.is_match(url) { + return url.to_string(); + } + format!("{url}/") +} + +#[test] +fn test_ensure_trailing_slashed() { + assert_eq!( + &ensure_trailing_slashes("http://start9.com"), + "http://start9.com/" + ); + assert_eq!( + &ensure_trailing_slashes("http://start9.com/"), + "http://start9.com/" + ); + assert_eq!( + &ensure_trailing_slashes("http://start9.com/a"), + "http://start9.com/a/" + ); +} + #[derive(Debug, Clone, Copy)] pub enum MarketPlaceUrls { Default,