diff --git a/src/pingintel_api/sov_fixer/sov_fixer_api_client.py b/src/pingintel_api/sov_fixer/sov_fixer_api_client.py index 691bc5c..d3a5565 100644 --- a/src/pingintel_api/sov_fixer/sov_fixer_api_client.py +++ b/src/pingintel_api/sov_fixer/sov_fixer_api_client.py @@ -11,6 +11,7 @@ import click from pingintel_api.api_client_base import APIClientBase +from urllib.parse import urlparse, urlunparse from ..utils import is_fileobj, raise_for_status from . import types as t @@ -134,6 +135,25 @@ def fix_sov_download( if not output_url.startswith("http"): assert output_url.startswith("/"), f"Invalid output URL: {output_url}" output_url = self.api_url + output_url + else: + # Ensure output_url uses the same port as self.api_url + api_parts = urlparse(self.api_url) + output_parts = urlparse(output_url) + api_port = api_parts.port + if api_port and (output_parts.port != api_port): + netloc = output_parts.hostname + if api_port: + netloc += f":{api_port}" + output_url = urlunparse( + ( + output_parts.scheme, + netloc, + output_parts.path, + output_parts.params, + output_parts.query, + output_parts.fragment, + ) + ) if self.environment and self.environment == "local2" and "api-local.sovfixer.com" in output_url: output_url = output_url.replace("api-local.sovfixer.com", "localhost:8000")