mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Update remaining Axios calls (#22525)
* initial commit adding put and delete operations * change response.data => response.body * add client response interface * add error to interface * add reqHeaders
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
|
||||
import { ResourceGraphClient } from '@azure/arm-resourcegraph';
|
||||
import { TokenCredentials } from '@azure/ms-rest-js';
|
||||
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
|
||||
import * as azdata from 'azdata';
|
||||
import { AzureRestResponse, GetResourceGroupsResult, GetSubscriptionsResult, ResourceQueryResult, GetBlobContainersResult, GetFileSharesResult, HttpRequestMethod, GetLocationsResult, GetManagedDatabasesResult, CreateResourceGroupResult, GetBlobsResult, GetStorageAccountAccessKeyResult, AzureAccount, azureResource, AzureAccountProviderMetadata } from 'azurecore';
|
||||
import { EOL } from 'os';
|
||||
@@ -18,9 +17,19 @@ import { AzureResourceGroupService } from './providers/resourceGroup/resourceGro
|
||||
import { BlobServiceClient, StorageSharedKeyCredential } from '@azure/storage-blob';
|
||||
import providerSettings from '../account-provider/providerSettings';
|
||||
import * as Constants from '../constants';
|
||||
import { getProxyEnabledHttpClient } from '../utils';
|
||||
import { HttpClient } from '../account-provider/auths/httpClient';
|
||||
import { NetworkRequestOptions } from '@azure/msal-common';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
|
||||
export interface HttpClientResponse {
|
||||
body: any;
|
||||
headers: any;
|
||||
status: Number;
|
||||
error: any;
|
||||
}
|
||||
|
||||
function getErrorMessage(error: Error | string): string {
|
||||
return (error instanceof Error) ? error.message : error;
|
||||
}
|
||||
@@ -162,7 +171,7 @@ export async function getLocations(appContext: AppContext, account?: AzureAccoun
|
||||
const path = `/subscriptions/${subscription.id}/locations?api-version=2020-01-01`;
|
||||
const host = getProviderMetadataForAccount(account).settings.armResource.endpoint;
|
||||
const response = await makeHttpRequest(account, subscription, path, HttpRequestMethod.GET, undefined, ignoreErrors, host);
|
||||
result.locations.push(...response.response.data.value);
|
||||
result.locations.push(...response.response.body.value);
|
||||
result.errors.push(...response.errors);
|
||||
} catch (err) {
|
||||
const error = new Error(localize('azure.accounts.getLocations.queryError', "Error fetching locations for account {0} ({1}) subscription {2} ({3}) tenant {4} : {5}",
|
||||
@@ -341,6 +350,7 @@ export async function getSelectedSubscriptions(appContext: AppContext, account?:
|
||||
*/
|
||||
export async function makeHttpRequest(account: AzureAccount, subscription: azureResource.AzureResourceSubscription, path: string, requestType: HttpRequestMethod, requestBody?: any, ignoreErrors: boolean = false, host: string = 'https://management.azure.com', requestHeaders: { [key: string]: string } = {}): Promise<AzureRestResponse> {
|
||||
const result: AzureRestResponse = { response: {}, errors: [] };
|
||||
const httpClient: HttpClient = getProxyEnabledHttpClient();
|
||||
|
||||
if (!account?.properties?.tenants || !Array.isArray(account.properties.tenants)) {
|
||||
const error = new Error(invalidAzureAccount);
|
||||
@@ -380,15 +390,15 @@ export async function makeHttpRequest(account: AzureAccount, subscription: azure
|
||||
return result;
|
||||
}
|
||||
|
||||
const reqHeaders = {
|
||||
let reqHeaders = {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${securityToken.token}`,
|
||||
...requestHeaders
|
||||
};
|
||||
}
|
||||
|
||||
const config: AxiosRequestConfig = {
|
||||
let networkRequestOptions: NetworkRequestOptions = {
|
||||
headers: reqHeaders,
|
||||
validateStatus: () => true // Never throw
|
||||
body: requestBody
|
||||
};
|
||||
|
||||
// Adding '/' if path does not begin with it.
|
||||
@@ -403,19 +413,23 @@ export async function makeHttpRequest(account: AzureAccount, subscription: azure
|
||||
requestUrl = `${account.properties.providerSettings.settings.armResource.endpoint}${path}`;
|
||||
}
|
||||
|
||||
let response: AxiosResponse | undefined;
|
||||
let response;
|
||||
switch (requestType) {
|
||||
case HttpRequestMethod.GET:
|
||||
response = await axios.get(requestUrl, config);
|
||||
response = await httpClient.sendGetRequestAsync<any>(requestUrl, {
|
||||
headers: reqHeaders
|
||||
});
|
||||
break;
|
||||
case HttpRequestMethod.POST:
|
||||
response = await axios.post(requestUrl, requestBody, config);
|
||||
response = await httpClient.sendPostRequestAsync<HttpClientResponse>(requestUrl, networkRequestOptions);
|
||||
break;
|
||||
case HttpRequestMethod.PUT:
|
||||
response = await axios.put(requestUrl, requestBody, config);
|
||||
response = await httpClient.sendPutRequestAsync<HttpClientResponse>(requestUrl, networkRequestOptions);
|
||||
break;
|
||||
case HttpRequestMethod.DELETE:
|
||||
response = await axios.delete(requestUrl, config);
|
||||
response = await httpClient.sendDeleteRequestAsync<any>(requestUrl, {
|
||||
headers: reqHeaders
|
||||
});
|
||||
break;
|
||||
default:
|
||||
const error = new Error(`Unknown RequestType "${requestType}"`);
|
||||
@@ -434,9 +448,8 @@ export async function makeHttpRequest(account: AzureAccount, subscription: azure
|
||||
} else if (response.status < 200 || response.status > 299) {
|
||||
let errorMessage: string[] = [];
|
||||
errorMessage.push(response.status.toString());
|
||||
errorMessage.push(response.statusText);
|
||||
if (response.data && response.data.error) {
|
||||
errorMessage.push(`${response.data.error.code} : ${response.data.error.message}`);
|
||||
if (response.body && response.body.error) {
|
||||
errorMessage.push(`${response.body.error.code} : ${response.body.error.message}`);
|
||||
}
|
||||
const error = new Error(errorMessage.join(EOL));
|
||||
if (!ignoreErrors) {
|
||||
@@ -455,7 +468,7 @@ export async function getManagedDatabases(account: AzureAccount, subscription: a
|
||||
const host = getProviderMetadataForAccount(account).settings.armResource.endpoint;
|
||||
const response = await makeHttpRequest(account, subscription, path, HttpRequestMethod.GET, undefined, ignoreErrors, host);
|
||||
return {
|
||||
databases: response?.response?.data?.value ?? [],
|
||||
databases: response?.response?.body?.value ?? [],
|
||||
errors: response.errors ? response.errors : []
|
||||
};
|
||||
}
|
||||
@@ -465,7 +478,7 @@ export async function getBlobContainers(account: AzureAccount, subscription: azu
|
||||
const host = getProviderMetadataForAccount(account).settings.armResource.endpoint;
|
||||
const response = await makeHttpRequest(account, subscription, path, HttpRequestMethod.GET, undefined, ignoreErrors, host);
|
||||
return {
|
||||
blobContainers: response?.response?.data?.value ?? [],
|
||||
blobContainers: response?.response?.body?.value ?? [],
|
||||
errors: response.errors ? response.errors : []
|
||||
};
|
||||
}
|
||||
@@ -475,7 +488,7 @@ export async function getFileShares(account: AzureAccount, subscription: azureRe
|
||||
const host = getProviderMetadataForAccount(account).settings.armResource.endpoint;
|
||||
const response = await makeHttpRequest(account, subscription, path, HttpRequestMethod.GET, undefined, ignoreErrors, host);
|
||||
return {
|
||||
fileShares: response?.response?.data?.value ?? [],
|
||||
fileShares: response?.response?.body?.value ?? [],
|
||||
errors: response.errors ? response.errors : []
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user