4
4
import ssl
5
5
6
6
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
8
10
9
11
10
12
class Stream :
@@ -86,6 +88,7 @@ def _get_proxy_config(self):
86
88
87
89
proxy_server = None
88
90
proxy_port = None
91
+ proxy_auth = None
89
92
ssl_enabled = self ._ssl_enabled
90
93
91
94
if ssl_enabled :
@@ -100,7 +103,12 @@ def _get_proxy_config(self):
100
103
proxy_server = p .hostname
101
104
proxy_port = p .port
102
105
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
104
112
105
113
def _get_ssl_context (self ):
106
114
"""
@@ -123,7 +131,7 @@ def _connect(self):
123
131
port = self ._port
124
132
headers = self ._headers
125
133
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 ()
127
135
128
136
if (proxy_server and proxy_port ):
129
137
if ssl_enabled :
@@ -135,7 +143,12 @@ def _connect(self):
135
143
self ._conn = http_client .HTTPConnection (
136
144
proxy_server , proxy_port
137
145
)
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 )
139
152
else :
140
153
if ssl_enabled :
141
154
context = self ._get_ssl_context ()
0 commit comments