This commit is contained in:
jxxghp 2024-06-06 14:21:20 +08:00
parent 947d0d6d4b
commit 03d6834471

View File

@ -604,19 +604,29 @@ class StringUtils:
def get_domain_address(address: str, prefix: bool = True) -> Tuple[Optional[str], Optional[int]]: def get_domain_address(address: str, prefix: bool = True) -> Tuple[Optional[str], Optional[int]]:
""" """
从地址中获取域名和端口号 从地址中获取域名和端口号
:param address: 地址
:param prefix返回域名是否要包含协议前缀
""" """
if not address: if not address:
return None, None return None, None
if prefix and not address.startswith("http"): if prefix and not address.startswith("http"):
# 如果需要包含协议前缀,但地址不包含协议前缀,则添加
address = "http://" + address address = "http://" + address
elif not prefix and address.startswith("http"):
# 如果不需要包含协议前缀,但地址包含协议前缀,则去掉
address = address.split("://")[-1]
# 去掉末尾的/
address = address.rstrip("/")
# 拆分域名和端口号
parts = address.split(":") parts = address.split(":")
if len(parts) > 3: if len(parts) > 3:
# 处理不希望包含多个冒号的情况(除了协议后的冒号) # 处理不希望包含多个冒号的情况(除了协议后的冒号)
return None, None return None, None
# 不含端口地址
domain = ":".join(parts[:-1]) domain = ":".join(parts[:-1])
if domain.endswith("/"): if domain.endswith("/"):
domain = domain[:-1] domain = domain[:-1]
# 检查是否包含端口号 # 端口号
try: try:
port = int(parts[-1]) port = int(parts[-1])
except ValueError: except ValueError: