diff --git a/tests.py b/tests.py index ef90a815c..900358797 100644 --- a/tests.py +++ b/tests.py @@ -67,6 +67,8 @@ from flags import is_right_to_left_text from status import actor_status_expired from status import get_actor_status from unicodetext import uninvert_text +from utils import remove_domain_port +from utils import get_port_from_domain from utils import is_yggdrasil_url from utils import replace_strings from utils import valid_content_warning @@ -9653,8 +9655,12 @@ def _test_yggdrasil_addresses() -> None: assert is_yggdrasil_url(text) text = 'http://[200:abcd:abcd:abcd:abcd:abcd:abcd:abcd]:5026/something' assert is_yggdrasil_url(text) + assert get_port_from_domain(text) == 5026 + assert remove_domain_port(text) == \ + 'http://[200:abcd:abcd:abcd:abcd:abcd:abcd:abcd]' text = 'http://[203:abcd:abcd:abcd:abcd:abcd:abcd]/something' assert not is_yggdrasil_url(text) + assert get_port_from_domain(text) is None def run_all_tests(): diff --git a/utils.py b/utils.py index 244355bf3..3b557b8e6 100644 --- a/utils.py +++ b/utils.py @@ -2964,7 +2964,8 @@ def remove_domain_port(domain: str) -> str: if domain.startswith('did:'): return domain if ']:' not in domain: - domain = domain.split(':')[0] + if '[' not in domain: + domain = domain.split(':')[0] else: domain = domain.split(']:')[0] + ']' return domain @@ -2977,12 +2978,17 @@ def get_port_from_domain(domain: str) -> int: if ':' in domain: if domain.startswith('did:'): return None + port_str = '' if ']:' not in domain: - port_str = domain.split(':')[1] + if '[' not in domain: + port_str = domain.split(':')[1] else: port_str = domain.split(']:')[1] - if port_str.isdigit(): - return int(port_str) + if port_str: + if '/' in port_str: + port_str = port_str.split('/')[0] + if port_str.isdigit(): + return int(port_str) return None