diff options
author | Minteck <nekostarfan@gmail.com> | 2021-08-24 14:41:48 +0200 |
---|---|---|
committer | Minteck <nekostarfan@gmail.com> | 2021-08-24 14:41:48 +0200 |
commit | d25e11bee6ca5ca523884da132d18e1400e077b9 (patch) | |
tree | 8af39fde19f7ed640a60fb397c7edd647dff1c4c /node_modules/caw/index.js | |
download | kartik-iridium-d25e11bee6ca5ca523884da132d18e1400e077b9.tar.gz kartik-iridium-d25e11bee6ca5ca523884da132d18e1400e077b9.tar.bz2 kartik-iridium-d25e11bee6ca5ca523884da132d18e1400e077b9.zip |
Initial commit
Diffstat (limited to 'node_modules/caw/index.js')
-rw-r--r-- | node_modules/caw/index.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/node_modules/caw/index.js b/node_modules/caw/index.js new file mode 100644 index 0000000..69e7f55 --- /dev/null +++ b/node_modules/caw/index.js @@ -0,0 +1,37 @@ +'use strict'; +const url = require('url'); +const getProxy = require('get-proxy'); +const isurl = require('isurl'); +const tunnelAgent = require('tunnel-agent'); +const urlToOptions = require('url-to-options'); + +module.exports = (proxy, opts) => { + proxy = proxy || getProxy(); + opts = Object.assign({}, opts); + + if (typeof proxy === 'object') { + opts = proxy; + proxy = getProxy(); + } + + if (!proxy) { + return null; + } + + proxy = isurl.lenient(proxy) ? urlToOptions(proxy) : url.parse(proxy); + + const uriProtocol = opts.protocol === 'https' ? 'https' : 'http'; + const proxyProtocol = proxy.protocol === 'https:' ? 'Https' : 'Http'; + const port = proxy.port || (proxyProtocol === 'Https' ? 443 : 80); + const method = `${uriProtocol}Over${proxyProtocol}`; + + delete opts.protocol; + + return tunnelAgent[method](Object.assign({ + proxy: { + port, + host: proxy.hostname, + proxyAuth: proxy.auth + } + }, opts)); +}; |