mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-10 18:22:34 -05:00
Replace Axios calls with HttpClient (#22417)
* replace axios calls with httpClient * add latest files * fix url
This commit is contained in:
61
extensions/azurecore/src/proxy.ts
Normal file
61
extensions/azurecore/src/proxy.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { HttpProxyAgent, HttpProxyAgentOptions } from 'http-proxy-agent';
|
||||
import { HttpsProxyAgent, HttpsProxyAgentOptions } from 'https-proxy-agent';
|
||||
import { parse as parseUrl, Url } from 'url';
|
||||
|
||||
function getSystemProxyURL(requestURL: Url): string | undefined {
|
||||
if (requestURL.protocol === 'http:') {
|
||||
return process.env.HTTP_PROXY || process.env.http_proxy || undefined;
|
||||
} else if (requestURL.protocol === 'https:') {
|
||||
return process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || undefined;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export function isBoolean(obj: any): obj is boolean {
|
||||
return obj === true || obj === false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the proxy agent using the proxy url in the parameters or the system proxy. Returns null if no proxy found
|
||||
*/
|
||||
export function getProxyAgent(requestURL: Url, proxy?: string, strictSSL?: boolean): HttpsProxyAgent | HttpProxyAgent | undefined {
|
||||
const proxyURL = proxy || getSystemProxyURL(requestURL);
|
||||
if (!proxyURL) {
|
||||
return undefined;
|
||||
}
|
||||
const proxyEndpoint = parseUrl(proxyURL);
|
||||
const opts = getProxyAgentOptions(requestURL, proxy, strictSSL);
|
||||
return proxyEndpoint.protocol === 'https:' ? new HttpsProxyAgent(opts as HttpsProxyAgentOptions) : new HttpProxyAgent(opts as HttpProxyAgentOptions);
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the proxy agent using the proxy url in the parameters or the system proxy. Returns null if no proxy found
|
||||
*/
|
||||
export function getProxyAgentOptions(requestURL: Url, proxy?: string, strictSSL?: boolean): HttpsProxyAgentOptions | HttpProxyAgentOptions | undefined {
|
||||
const proxyURL = proxy || getSystemProxyURL(requestURL);
|
||||
|
||||
if (!proxyURL) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const proxyEndpoint = parseUrl(proxyURL);
|
||||
|
||||
if (!/^https?:$/.test(proxyEndpoint.protocol!)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const opts: HttpsProxyAgentOptions | HttpProxyAgentOptions = {
|
||||
host: proxyEndpoint.hostname,
|
||||
port: Number(proxyEndpoint.port),
|
||||
auth: proxyEndpoint.auth,
|
||||
rejectUnauthorized: isBoolean(strictSSL) ? strictSSL : true
|
||||
};
|
||||
|
||||
return opts;
|
||||
}
|
||||
Reference in New Issue
Block a user