From c0759f5b1855830a260528c9e9942536639937d3 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Thu, 9 Mar 2023 03:04:34 +0000 Subject: [PATCH] Add ports to http.redirect() --- behave_utils/http.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/behave_utils/http.py b/behave_utils/http.py index bf324de..50e7f25 100644 --- a/behave_utils/http.py +++ b/behave_utils/http.py @@ -26,6 +26,7 @@ def redirect( session: requests.Session, prefix: str, address: ipaddress.IPv4Address, + port: int = 0, /, certificate: str|None = None, ) -> None: """ @@ -40,7 +41,7 @@ def redirect( """ if not prefix.startswith("http://") or prefix.startswith("https://"): prefix = f"http://{prefix}" if certificate is None else f"https://{prefix}" - session.mount(prefix, _DirectedAdapter(address, certificate)) + session.mount(prefix, _DirectedAdapter(address, port, certificate)) class _DirectedAdapter(requests.adapters.HTTPAdapter): @@ -54,19 +55,20 @@ class _DirectedAdapter(requests.adapters.HTTPAdapter): function. """ - def __init__(self, destination: ipaddress.IPv4Address, certificate: str|None): + def __init__(self, address: ipaddress.IPv4Address, port: int, certificate: str|None, /): super().__init__() - self.destination = destination + self.destination = address, port self.certificate = certificate def get_connection(self, url: str, proxies: Mapping[str, str]|None = None) -> connectionpool.HTTPConnectionPool: + address, port = self.destination parts = urlparse(url) if parts.hostname is None: raise LocationParseError(url) if parts.scheme == "https": - return _HTTPSConnectionPool(parts.hostname, parts.port, address=self.destination) + return _HTTPSConnectionPool(parts.hostname, port or parts.port, address=address) if parts.scheme == "http": - return _HTTPConnectionPool(parts.hostname, parts.port, address=self.destination) + return _HTTPConnectionPool(parts.hostname, port or parts.port, address=address) raise URLSchemeUnknown(parts.scheme) def cert_verify( -- GitLab