summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Wojtczak <45100954+adamwojt@users.noreply.github.com>2022-08-24 21:35:20 +0300
committerGitHub <noreply@github.com>2022-08-24 21:35:20 +0300
commit285e0a832e3212ef9ffa8c94fe26a30829353b32 (patch)
treed072d8c10150bb40eb0eaf2b00dc142881056f76
parent43eb3446cdff6f092f20c00a5de012d32fc0336d (diff)
downloadwebsocket-client-285e0a832e3212ef9ffa8c94fe26a30829353b32.tar.gz
Allow passing `http_proxy_timeout` to `run_forever`. (#842)
* Allow passing `http_proxy_timeout` to `run_forever` * Normalize docstring * fix flake8 lint Co-authored-by: Adam Wojtczak <adam.wojtczak@cybercare.cc> Co-authored-by: engn33r <engn33r@users.noreply.github.com>
-rw-r--r--websocket/_app.py8
-rw-r--r--websocket/_core.py4
-rw-r--r--websocket/_http.py4
-rw-r--r--websocket/tests/test_http.py12
4 files changed, 19 insertions, 9 deletions
diff --git a/websocket/_app.py b/websocket/_app.py
index 3a2c8b7..afe0762 100644
--- a/websocket/_app.py
+++ b/websocket/_app.py
@@ -237,6 +237,7 @@ class WebSocketApp:
ping_payload="",
http_proxy_host=None, http_proxy_port=None,
http_no_proxy=None, http_proxy_auth=None,
+ http_proxy_timeout=None,
skip_utf8_validation=False,
host=None, origin=None, dispatcher=None,
suppress_origin=False, proxy_type=None, reconnect=5):
@@ -265,6 +266,10 @@ class WebSocketApp:
HTTP proxy host name.
http_proxy_port: int or str
HTTP proxy port. If not set, set to 80.
+ http_proxy_timeout: int or float
+ HTTP proxy timeout, default is 60 sec as per python-socks.
+ http_proxy_auth: tuple
+ HTTP proxy auth information. tuple of username and password. Default is None.
http_no_proxy: list
Whitelisted host names that don't use the proxy.
skip_utf8_validation: bool
@@ -338,7 +343,8 @@ class WebSocketApp:
self.url, header=self.header, cookie=self.cookie,
http_proxy_host=http_proxy_host,
http_proxy_port=http_proxy_port, http_no_proxy=http_no_proxy,
- http_proxy_auth=http_proxy_auth, subprotocols=self.subprotocols,
+ http_proxy_auth=http_proxy_auth, http_proxy_timeout=http_proxy_timeout,
+ subprotocols=self.subprotocols,
host=host, origin=origin, suppress_origin=suppress_origin,
proxy_type=proxy_type, socket=self.prepared_socket)
diff --git a/websocket/_core.py b/websocket/_core.py
index c36b780..73d38b1 100644
--- a/websocket/_core.py
+++ b/websocket/_core.py
@@ -233,6 +233,8 @@ class WebSocket:
Whitelisted host names that don't use the proxy.
http_proxy_auth: tuple
HTTP proxy auth information. Tuple of username and password. Default is None.
+ http_proxy_timeout: int or float
+ HTTP proxy timeout, default is 60 sec as per python-socks.
redirect_limit: int
Number of redirects to follow.
subprotocols: list
@@ -572,6 +574,8 @@ def create_connection(url, timeout=None, class_=WebSocket, **options):
Whitelisted host names that don't use the proxy.
http_proxy_auth: tuple
HTTP proxy auth information. tuple of username and password. Default is None.
+ http_proxy_timeout: int or float
+ HTTP proxy timeout, default is 60 sec as per python-socks.
enable_multithread: bool
Enable lock for multithread.
redirect_limit: int
diff --git a/websocket/_http.py b/websocket/_http.py
index cdf2f02..a026484 100644
--- a/websocket/_http.py
+++ b/websocket/_http.py
@@ -23,7 +23,7 @@ import sys
from ._exceptions import *
from ._logging import *
-from ._socket import*
+from ._socket import *
from ._ssl_compat import *
from ._url import *
@@ -59,7 +59,7 @@ class proxy_info:
self.no_proxy = options.get("http_no_proxy", None)
self.proxy_protocol = options.get("proxy_type", "http")
# Note: If timeout not specified, default python-socks timeout is 60 seconds
- self.proxy_timeout = options.get("timeout", None)
+ self.proxy_timeout = options.get("http_proxy_timeout", None)
if self.proxy_protocol not in ['http', 'socks4', 'socks4a', 'socks5', 'socks5h']:
raise ProxyError("Only http, socks4, socks5 proxy protocols are supported")
else:
diff --git a/websocket/tests/test_http.py b/websocket/tests/test_http.py
index 649e0fe..ffcbde2 100644
--- a/websocket/tests/test_http.py
+++ b/websocket/tests/test_http.py
@@ -105,15 +105,15 @@ class HttpTest(unittest.TestCase):
if ws._http.HAVE_PYTHON_SOCKS:
# Need this check, otherwise case where python_socks is not installed triggers
# websocket._exceptions.WebSocketException: Python Socks is needed for SOCKS proxying but is not available
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4", timeout=1))
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4a", timeout=1))
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5", timeout=1))
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5h", timeout=1))
- self.assertRaises(ProxyConnectionError, connect, "wss://example.com", OptsList(), proxy_info(http_proxy_host="127.0.0.1", http_proxy_port=9999, proxy_type="socks4", timeout=1), None)
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4", http_proxy_timeout=1))
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4a", http_proxy_timeout=1))
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5", http_proxy_timeout=1))
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5h", http_proxy_timeout=1))
+ self.assertRaises(ProxyConnectionError, connect, "wss://example.com", OptsList(), proxy_info(http_proxy_host="127.0.0.1", http_proxy_port=9999, proxy_type="socks4", http_proxy_timeout=1), None)
self.assertRaises(TypeError, _get_addrinfo_list, None, 80, True, proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="9999", proxy_type="http"))
self.assertRaises(TypeError, _get_addrinfo_list, None, 80, True, proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="9999", proxy_type="http"))
- self.assertRaises(socket.timeout, connect, "wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=9999, proxy_type="http", timeout=1), None)
+ self.assertRaises(socket.timeout, connect, "wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=9999, proxy_type="http", http_proxy_timeout=1), None)
self.assertEqual(
connect("wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=8080, proxy_type="http"), True),
(True, ("google.com", 443, "/")))