UNPKG

1.74 kBJavaScriptView Raw
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License. See License.txt in the project root for license information.
3import * as tunnel from "tunnel";
4import { URLBuilder } from "./url";
5export function createProxyAgent(requestUrl, proxySettings, headers) {
6 var tunnelOptions = {
7 proxy: {
8 host: URLBuilder.parse(proxySettings.host).getHost(),
9 port: proxySettings.port,
10 headers: (headers && headers.rawHeaders()) || {},
11 },
12 };
13 if (proxySettings.username && proxySettings.password) {
14 tunnelOptions.proxy.proxyAuth = proxySettings.username + ":" + proxySettings.password;
15 }
16 else if (proxySettings.username) {
17 tunnelOptions.proxy.proxyAuth = "" + proxySettings.username;
18 }
19 var requestScheme = URLBuilder.parse(requestUrl).getScheme() || "";
20 var isRequestHttps = requestScheme.toLowerCase() === "https";
21 var proxyScheme = URLBuilder.parse(proxySettings.host).getScheme() || "";
22 var isProxyHttps = proxyScheme.toLowerCase() === "https";
23 var proxyAgent = {
24 isHttps: isRequestHttps,
25 agent: createTunnel(isRequestHttps, isProxyHttps, tunnelOptions),
26 };
27 return proxyAgent;
28}
29export function createTunnel(isRequestHttps, isProxyHttps, tunnelOptions) {
30 if (isRequestHttps && isProxyHttps) {
31 return tunnel.httpsOverHttps(tunnelOptions);
32 }
33 else if (isRequestHttps && !isProxyHttps) {
34 return tunnel.httpsOverHttp(tunnelOptions);
35 }
36 else if (!isRequestHttps && isProxyHttps) {
37 return tunnel.httpOverHttps(tunnelOptions);
38 }
39 else {
40 return tunnel.httpOverHttp(tunnelOptions);
41 }
42}
43//# sourceMappingURL=proxyAgent.js.map
\No newline at end of file