diff options
| author | David Lönnhager <david.l@mullvad.net> | 2025-02-26 14:36:17 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2025-03-06 00:09:18 +0100 |
| commit | bacc30a30be8bc3953f8d358d9545e302c5a0df6 (patch) | |
| tree | 177ebdfc7769db8865c4130c4d3ef7a5f350b706 | |
| parent | 773a9d64657f8a3b894e023923db5db48c4a0930 (diff) | |
| download | mullvadvpn-bacc30a30be8bc3953f8d358d9545e302c5a0df6.tar.xz mullvadvpn-bacc30a30be8bc3953f8d358d9545e302c5a0df6.zip | |
Fix base URL parsing
| -rw-r--r-- | mullvad-update/meta/src/artifacts.rs | 37 | ||||
| -rw-r--r-- | mullvad-update/meta/src/main.rs | 2 | ||||
| -rw-r--r-- | mullvad-update/meta/src/platform.rs | 2 |
3 files changed, 32 insertions, 9 deletions
diff --git a/mullvad-update/meta/src/artifacts.rs b/mullvad-update/meta/src/artifacts.rs index 968c86416e..c945579dcd 100644 --- a/mullvad-update/meta/src/artifacts.rs +++ b/mullvad-update/meta/src/artifacts.rs @@ -44,13 +44,7 @@ pub async fn generate_installer_details( .file_name() .and_then(|f| f.to_str()) .context("Unexpected filename")?; - let urls = base_urls - .iter() - .map(|base_url| { - let base_url = base_url.split('/').next().unwrap_or(base_url); - format!("{base_url}/{}", filename) - }) - .collect(); + let urls = derive_urls(base_urls, filename); Ok(format::Installer { architecture, @@ -59,3 +53,32 @@ pub async fn generate_installer_details( sha256: hex::encode(checksum), }) } + +fn derive_urls(base_urls: &[String], filename: &str) -> Vec<String> { + base_urls + .iter() + .map(|base_url| { + let url = base_url.strip_suffix("/").unwrap_or(base_url); + format!("{url}/{}", filename) + }) + .collect() +} + +#[cfg(test)] +mod test { + use super::*; + + /// Test derivation of URLs from base URLs + #[tokio::test] + pub async fn test_urls() { + let base_urls = vec![ + "https://fake1.fake/".to_string(), + "https://fake2.fake".to_string(), + ]; + + assert_eq!( + &derive_urls(&base_urls, "test.exe"), + &["https://fake1.fake/test.exe", "https://fake2.fake/test.exe",] + ); + } +} diff --git a/mullvad-update/meta/src/main.rs b/mullvad-update/meta/src/main.rs index 5d5eee5215..58bb3c5ebd 100644 --- a/mullvad-update/meta/src/main.rs +++ b/mullvad-update/meta/src/main.rs @@ -119,7 +119,7 @@ async fn main() -> anyhow::Result<()> { match opt { Opt::GenerateKey => { - println!("{}", key::SecretKey::generate().to_string()); + println!("{}", key::SecretKey::generate()); Ok(()) } Opt::CreateMetadataFile { platforms } => { diff --git a/mullvad-update/meta/src/platform.rs b/mullvad-update/meta/src/platform.rs index 0dd6c89257..ccabd4cccf 100644 --- a/mullvad-update/meta/src/platform.rs +++ b/mullvad-update/meta/src/platform.rs @@ -397,7 +397,7 @@ impl Platform { release.rollout = new_rollout; } - print_release_info(&release); + print_release_info(release); let json = serde_json::to_string_pretty(&work_response) .context("Failed to serialize updated metadata")?; |
