From d14466f38b6b33b2d281ac6ab3861c25e511b383 Mon Sep 17 00:00:00 2001 From: Connor White Date: Sat, 31 Aug 2019 23:41:07 -0500 Subject: [PATCH] Allow for async host functions. --- app/steps/resolveProxyHost.js | 10 ++++++---- lib/requestOptions.js | 28 +++++++++++++++------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/app/steps/resolveProxyHost.js b/app/steps/resolveProxyHost.js index 181dda7a..11bd4a0d 100644 --- a/app/steps/resolveProxyHost.js +++ b/app/steps/resolveProxyHost.js @@ -10,10 +10,12 @@ function resolveProxyHost(container) { parsedHost = requestOptions.parseHost(container); } - container.proxy.reqBuilder.host = parsedHost.host; - container.proxy.reqBuilder.port = container.options.port || parsedHost.port; - container.proxy.requestModule = parsedHost.module; - return Promise.resolve(container); + return Promise.resolve(parsedHost).then((parsedHost) => { + container.proxy.reqBuilder.host = parsedHost.host; + container.proxy.reqBuilder.port = container.options.port || parsedHost.port; + container.proxy.requestModule = parsedHost.module; + return Promise.resolve(container); + }); } module.exports = resolveProxyHost; diff --git a/lib/requestOptions.js b/lib/requestOptions.js index 59b8af60..d83ce93f 100644 --- a/lib/requestOptions.js +++ b/lib/requestOptions.js @@ -30,23 +30,25 @@ function parseHost(Container) { return new Error('Empty host parameter'); } - if (!/http(s)?:\/\//.test(host)) { - host = 'http://' + host; - } + return Promise.resolve(host).then((host) => { + if (!/http(s)?:\/\//.test(host)) { + host = 'http://' + host; + } - var parsed = url.parse(host); + var parsed = url.parse(host); - if (!parsed.hostname) { - return new Error('Unable to parse hostname, possibly missing protocol://?'); - } + if (!parsed.hostname) { + return new Error('Unable to parse hostname, possibly missing protocol://?'); + } - var ishttps = options.https || parsed.protocol === 'https:'; + var ishttps = options.https || parsed.protocol === 'https:'; - return { - host: parsed.hostname, - port: parsed.port || (ishttps ? 443 : 80), - module: ishttps ? https : http, - }; + return { + host: parsed.hostname, + port: parsed.port || (ishttps ? 443 : 80), + module: ishttps ? https : http, + }; + }); } function reqHeaders(req, options) {