From 2dd5ba2602d954aae8af2e23a584214a4dd0b972 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 19 Jun 2024 08:54:32 +0000 Subject: fix(html): replace relative path with absolute path --- Cargo.toml | 2 +- src/html.rs | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 236cce7..90a2c24 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ [package] name = "september" -version = "0.2.19" +version = "0.2.20" authors = ["Fuwn "] edition = "2021" description = "A simple and efficient Gemini-to-HTTP proxy." diff --git a/src/html.rs b/src/html.rs index b35e41c..1e85685 100644 --- a/src/html.rs +++ b/src/html.rs @@ -4,13 +4,7 @@ fn link_from_host_href(url: &Url, href: &str) -> Option { Some(format!( "gemini://{}{}{}", url.domain()?, - { - if href.starts_with('/') { - "" - } else { - "/" - } - }, + { if href.starts_with('/') { "" } else { "/" } }, href )) } @@ -73,7 +67,17 @@ pub fn from_gemini( if href.contains("://") && !href.starts_with("gemini://") { surface = true; } else if !href.starts_with("gemini://") && !href.starts_with('/') { - href = format!("./{href}"); + href = format!( + "{}/{}", + url.domain().unwrap(), + if url.path().ends_with('/') { + format!("{}{}", url.path(), href) + } else { + format!("{}/{}", url.path(), href) + } + ) + .replace("//", "/"); + href = format!("gemini://{href}"); } else if href.starts_with('/') || !href.contains("://") { href = link_from_host_href(url, &href)?; } -- cgit v1.2.3