mirror of
https://github.com/langgenius/dify.git
synced 2026-11-10 13:26:58 +08:00
fix(url): normalize base url path without corrupting query and fragment (#45647)
This commit is contained in:
1 parent
9fbd9dcd33
commit
644f8b7c08
2 files changed
+22
-1
No files matched your search
@@ -3,7 +3,10 @@ from urllib.parse import urlsplit, urlunsplit
|
||||
|
||||
def normalize_api_base_url(base_url: str) -> str:
|
||||
"""Normalize a base URL to always end with /v1, avoiding double /v1 suffixes."""
|
||||
return base_url.rstrip("/").removesuffix("/v1").rstrip("/") + "/v1"
|
||||
base_url = base_url.strip()
|
||||
parsed = urlsplit(base_url)
|
||||
path = parsed.path.rstrip("/").removesuffix("/v1").rstrip("/") + "/v1"
|
||||
return urlunsplit(parsed._replace(path=path))
|
||||
|
||||
|
||||
def github_blob_to_raw_url(url: str) -> str:
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
from libs.url_utils import normalize_api_base_url
|
||||
|
||||
|
||||
def test_normalize_api_base_url_appends_v1() -> None:
|
||||
assert normalize_api_base_url("https://api.example.com") == "https://api.example.com/v1"
|
||||
assert normalize_api_base_url("https://api.example.com/") == "https://api.example.com/v1"
|
||||
assert normalize_api_base_url("https://api.example.com/v1") == "https://api.example.com/v1"
|
||||
assert normalize_api_base_url("https://api.example.com/v1/") == "https://api.example.com/v1"
|
||||
|
||||
|
||||
def test_normalize_api_base_url_preserves_query_and_fragment() -> None:
|
||||
assert normalize_api_base_url("https://api.example.com/v1?timeout=30") == "https://api.example.com/v1?timeout=30"
|
||||
assert normalize_api_base_url("https://api.example.com?timeout=30") == "https://api.example.com/v1?timeout=30"
|
||||
assert normalize_api_base_url("https://api.example.com/v1#section") == "https://api.example.com/v1#section"
|
||||
|
||||
|
||||
def test_normalize_api_base_url_strips_surrounding_whitespace() -> None:
|
||||
assert normalize_api_base_url(" https://api.example.com/v1 ") == "https://api.example.com/v1"
|
||||
Reference in new issue
Block a user