fix: safe urls for packages

String catenation used for url generators didn't encode package names
which could lead to missing data in case if e.g. there is slash (/) in
package name
This commit is contained in:
2024-01-03 14:28:20 +02:00
parent 0e6434faad
commit 6eeef39fe5
2 changed files with 6 additions and 4 deletions

View File

@ -94,7 +94,7 @@ class WebClient(Client, SyncAhrimanClient):
Returns:
str: full url for web service for logs
"""
return f"{self.address}/api/v1/packages/{package_base}/changes"
return f"{self.address}/api/v1/packages/{urlencode(package_base)}/changes"
def _logs_url(self, package_base: str) -> str:
"""
@ -106,7 +106,7 @@ class WebClient(Client, SyncAhrimanClient):
Returns:
str: full url for web service for logs
"""
return f"{self.address}/api/v1/packages/{package_base}/logs"
return f"{self.address}/api/v1/packages/{urlencode(package_base)}/logs"
def _package_url(self, package_base: str = "") -> str:
"""
@ -118,7 +118,7 @@ class WebClient(Client, SyncAhrimanClient):
Returns:
str: full url of web service for specific package base
"""
suffix = f"/{package_base}" if package_base else ""
suffix = f"/{urlencode(package_base)}" if package_base else ""
return f"{self.address}/api/v1/packages{suffix}"
def _status_url(self) -> str: