Skip to content

Commit 4c38dc5

Browse files
author
Pascal Zingg
committed
Using basic auth for proxy tunnel
1 parent dbb79e4 commit 4c38dc5

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

Diff for: plotly/plotly/chunked_requests/chunked_request.py

+17-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import ssl
55

66
from six.moves import http_client
7-
from six.moves.urllib.parse import urlparse
7+
from six.moves.urllib.parse import urlparse, unquote
8+
9+
from plotly.api import utils
810

911

1012
class Stream:
@@ -86,6 +88,7 @@ def _get_proxy_config(self):
8688

8789
proxy_server = None
8890
proxy_port = None
91+
proxy_auth = None
8992
ssl_enabled = self._ssl_enabled
9093

9194
if ssl_enabled:
@@ -100,7 +103,12 @@ def _get_proxy_config(self):
100103
proxy_server = p.hostname
101104
proxy_port = p.port
102105

103-
return proxy_server, proxy_port
106+
if p.username and p.password:
107+
username = unquote(p.username)
108+
password = unquote(p.password)
109+
proxy_auth = utils.basic_auth(username, password)
110+
111+
return proxy_server, proxy_port, proxy_auth
104112

105113
def _get_ssl_context(self):
106114
"""
@@ -123,7 +131,7 @@ def _connect(self):
123131
port = self._port
124132
headers = self._headers
125133
ssl_enabled = self._ssl_enabled
126-
proxy_server, proxy_port = self._get_proxy_config()
134+
proxy_server, proxy_port, proxy_auth = self._get_proxy_config()
127135

128136
if (proxy_server and proxy_port):
129137
if ssl_enabled:
@@ -135,7 +143,12 @@ def _connect(self):
135143
self._conn = http_client.HTTPConnection(
136144
proxy_server, proxy_port
137145
)
138-
self._conn.set_tunnel(server, port)
146+
147+
tunnel_headers = None
148+
if proxy_auth:
149+
tunnel_headers = {'Proxy-Authorization': proxy_auth}
150+
151+
self._conn.set_tunnel(server, port, headers=tunnel_headers)
139152
else:
140153
if ssl_enabled:
141154
context = self._get_ssl_context()

0 commit comments

Comments
 (0)