aboutsummaryrefslogtreecommitdiff
path: root/node_modules/caw/index.js
diff options
context:
space:
mode:
authorMinteck <nekostarfan@gmail.com>2021-08-24 14:41:48 +0200
committerMinteck <nekostarfan@gmail.com>2021-08-24 14:41:48 +0200
commitd25e11bee6ca5ca523884da132d18e1400e077b9 (patch)
tree8af39fde19f7ed640a60fb397c7edd647dff1c4c /node_modules/caw/index.js
downloadkartik-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.js37
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));
+};