-
-
Notifications
You must be signed in to change notification settings - Fork 10.7k
/
http.proxy.js
42 lines (38 loc) · 1.05 KB
/
http.proxy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
'use strict';
var url = require('url');
var getProxyForUrl = require('proxy-from-env').getProxyForUrl;
/**
*
* @param {Object} config
* @param {string} config.url
* @param {Object=) config.proxy
* @param {string} config.proxy.host
* @param {number} config.proxy.port
* @return {object | undefined} proxy
* @return {string} proxy.host
* @return {number} proxy.number
* @return {object | undefined} proxy.auth
* @return {string} proxy.auth.username
* @return {string} proxy.auth.password
*/
module.exports = function getProxy(config) {
var proxy = config.proxy;
if (!proxy && proxy !== false) {
var envProxy = getProxyForUrl(config.url);
if (envProxy) {
var parsedProxyUrl = url.parse(envProxy);
proxy = {
host: parsedProxyUrl.hostname,
port: parsedProxyUrl.port
};
if (parsedProxyUrl.auth) {
var proxyUrlAuth = parsedProxyUrl.auth.split(':');
proxy.auth = {
username: proxyUrlAuth[0],
password: proxyUrlAuth[1]
};
}
}
}
return proxy || undefined;
};