Skip to content

Commit 6e50b35

Browse files
committed
Minor refactoring in the tunnel module:
- proxyHeaderWhiteList, proxyHeaderExclusiveList and proxyHeaders are no longer public properties of the request instance
1 parent da7bab6 commit 6e50b35

2 files changed

Lines changed: 21 additions & 11 deletions

File tree

‎lib/tunnel.js‎

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) {
6666
}, {})
6767
}
6868

69-
function constructTunnelOptions (request) {
69+
function constructTunnelOptions (request, proxyHeaders) {
7070
var proxy = request.proxy
7171

7272
var tunnelOptions = {
7373
proxy : {
7474
host : proxy.hostname,
7575
port : +proxy.port,
7676
proxyAuth : proxy.auth,
77-
headers : request.proxyHeaders
77+
headers : proxyHeaders
7878
},
7979
headers : request.headers,
8080
ca : request.ca,
@@ -107,6 +107,8 @@ function getTunnelFn(request) {
107107

108108
function Tunnel (request) {
109109
this.request = request
110+
this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList
111+
this.proxyHeaderExclusiveList = []
110112
}
111113

112114
Tunnel.prototype.isEnabled = function (options) {
@@ -136,10 +138,12 @@ Tunnel.prototype.isEnabled = function (options) {
136138
return undefined
137139
}
138140

139-
Tunnel.prototype.setup = function () {
141+
Tunnel.prototype.setup = function (options) {
140142
var self = this
141143
, request = self.request
142144

145+
options = options || {}
146+
143147
if (typeof request.proxy === 'string') {
144148
request.proxy = url.parse(request.proxy)
145149
}
@@ -149,20 +153,26 @@ Tunnel.prototype.setup = function () {
149153
}
150154

151155
// Setup Proxy Header Exclusive List and White List
152-
request.proxyHeaderExclusiveList = request.proxyHeaderExclusiveList || []
153-
request.proxyHeaderWhiteList = request.proxyHeaderWhiteList || defaultProxyHeaderWhiteList
154-
var proxyHeaderExclusiveList = request.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)
155-
var proxyHeaderWhiteList = request.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)
156+
if (options.proxyHeaderWhiteList) {
157+
self.proxyHeaderWhiteList = options.proxyHeaderWhiteList
158+
}
159+
if (options.proxyHeaderExclusiveList) {
160+
self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList
161+
}
162+
163+
var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)
164+
var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)
156165

157166
// Setup Proxy Headers and Proxy Headers Host
158167
// Only send the Proxy White Listed Header names
159-
request.proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)
160-
request.proxyHeaders.host = constructProxyHost(request.uri)
168+
var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)
169+
proxyHeaders.host = constructProxyHost(request.uri)
170+
161171
proxyHeaderExclusiveList.forEach(request.removeHeader, request)
162172

163173
// Set Agent from Tunnel Data
164174
var tunnelFn = getTunnelFn(request)
165-
var tunnelOptions = constructTunnelOptions(request)
175+
var tunnelOptions = constructTunnelOptions(request, proxyHeaders)
166176
request.agent = tunnelFn(tunnelOptions)
167177

168178
return true

‎request.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ Request.prototype.init = function (options) {
295295

296296
self.tunnel = self._tunnel.isEnabled(options)
297297
if (self.proxy) {
298-
self._tunnel.setup()
298+
self._tunnel.setup(options)
299299
}
300300

301301
self._redirect.onRequest(options)

0 commit comments

Comments
 (0)