Skip to content

Commit

Permalink
feat: update
Browse files Browse the repository at this point in the history
  • Loading branch information
wenytang-ms committed Aug 1, 2024
1 parent 153adfc commit 9f7d27f
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 36 deletions.
37 changes: 25 additions & 12 deletions src/azure/ApiCenter/ApiCenterService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license.
import { HttpOperationResponse, RequestPrepareOptions, ServiceClient } from "@azure/ms-rest-js";
import { ISubscriptionContext } from "@microsoft/vscode-azext-utils";
import { getCredentialForToken } from "../../utils/credentialUtil";
import { APICenterRestAPIs } from "./ApiCenterRestAPIs";
import { ApiCenter, ApiCenterApi, ApiCenterApiDeployment, ApiCenterApiVersion, ApiCenterApiVersionDefinition, ApiCenterApiVersionDefinitionExport, ApiCenterApiVersionDefinitionImport, ApiCenterEnvironment, ApiCenterRulesetConfig, ApiCenterRulesetExport, ApiCenterRulesetImport } from "./contracts";

Expand All @@ -18,7 +19,8 @@ export class ApiCenterService {
}

public async getApiCenter(): Promise<ApiCenter> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "GET",
url: APICenterRestAPIs.GetAPIService(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, this.apiVersion)
Expand All @@ -28,7 +30,8 @@ export class ApiCenterService {
}

public async getApiCenterApis(searchContent: string): Promise<{ value: ApiCenterApi[]; nextLink: string }> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
let url = APICenterRestAPIs.ListAPIs(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, this.apiVersion);
if (searchContent) {
url += `&$search=${searchContent}`;
Expand All @@ -42,7 +45,8 @@ export class ApiCenterService {
}

public async getApiCenterEnvironments(): Promise<{ value: ApiCenterEnvironment[]; nextLink: string }> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "GET",
url: APICenterRestAPIs.GetAPIEnvironments(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, this.apiVersion)
Expand All @@ -52,7 +56,8 @@ export class ApiCenterService {
}

public async getApiCenterApiVersions(apiName: string): Promise<{ value: ApiCenterApiVersion[]; nextLink: string }> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "GET",
url: APICenterRestAPIs.GetAPIVersions(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, this.apiVersion)
Expand All @@ -62,7 +67,8 @@ export class ApiCenterService {
}

public async getApiCenterApiDeployments(apiName: string): Promise<{ value: ApiCenterApiDeployment[]; nextLink: string }> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "GET",
url: APICenterRestAPIs.GetAPIDeployments(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, this.apiVersion)
Expand All @@ -72,7 +78,8 @@ export class ApiCenterService {
}

public async getApiCenterApiVersionDefinitions(apiName: string, apiVersion: string): Promise<{ value: ApiCenterApiVersionDefinition[]; nextLink: string }> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "GET",
url: APICenterRestAPIs.GetAPIDefinition(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, apiVersion, this.apiVersion)
Expand Down Expand Up @@ -102,7 +109,8 @@ export class ApiCenterService {
}

public async createOrUpdateApi(apiCenterApi: ApiCenterApi): Promise<ApiCenterApi> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "PUT",
url: APICenterRestAPIs.CreateAPI(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiCenterApi.name, this.apiVersion),
Expand All @@ -115,7 +123,8 @@ export class ApiCenterService {
}

public async createOrUpdateApiVersion(apiName: string, apiCenterApiVersion: ApiCenterApiVersion): Promise<ApiCenterApiVersion> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "PUT",
url: APICenterRestAPIs.CreateAPIVersion(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, apiCenterApiVersion.name, this.apiVersion),
Expand All @@ -129,7 +138,8 @@ export class ApiCenterService {
}

public async createOrUpdateApiDeployment(apiName: string, apiCenterApiDeployment: ApiCenterApiDeployment): Promise<ApiCenterApiDeployment> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "PUT",
url: APICenterRestAPIs.CreateAPIDeployment(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, apiCenterApiDeployment.name, this.apiVersion),
Expand All @@ -141,7 +151,8 @@ export class ApiCenterService {
}

public async createOrUpdateApiVersionDefinition(apiName: string, apiVersionName: string, apiCenterApiVersionDefinition: ApiCenterApiVersionDefinition): Promise<ApiCenterApiVersionDefinition> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "PUT",
url: APICenterRestAPIs.CreateAPIDefinition(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, apiVersionName, apiCenterApiVersionDefinition.name, this.apiVersion),
Expand Down Expand Up @@ -173,7 +184,8 @@ export class ApiCenterService {
apiVersionName: string,
apiCenterApiVersionDefinitionName: string,
importPayload: ApiCenterApiVersionDefinitionImport): Promise<boolean> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);

let options: RequestPrepareOptions = {
method: "POST",
Expand Down Expand Up @@ -204,7 +216,8 @@ export class ApiCenterService {
apiName: string,
apiVersionName: string,
apiCenterApiVersionDefinitionName: string): Promise<ApiCenterApiVersionDefinitionExport> {
const client = new ServiceClient(await this.susbcriptionContext.credentials.getToken());
const creds = getCredentialForToken(await this.susbcriptionContext.credentials.getToken());
const client = new ServiceClient(creds);
const options: RequestPrepareOptions = {
method: "POST",
url: APICenterRestAPIs.ExportApiSpecification(this.susbcriptionContext.subscriptionId, this.resourceGroupName, this.apiCenterName, apiName, apiVersionName, apiCenterApiVersionDefinitionName, this.apiVersion),
Expand Down
20 changes: 17 additions & 3 deletions src/azure/ApiCenter/contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
// Licensed under the MIT license.

export type GeneralApiCenter = ApiCenter | DataPlaneApiCenter;

export function isApiServerManagement(obj: GeneralApiCenter): obj is ApiCenter {
const keys = Object.keys(obj) as (keyof ApiCenter)[];
return (keys.length === Object.keys({} as ApiCenter).length) && keys.every(key => key in obj);
}
export type ApiCenter = {
id: string;
location: string;
Expand All @@ -19,7 +22,10 @@ export type DataPlaneApiCenter = {
}

Check warning on line 22 in src/azure/ApiCenter/contracts.ts

View workflow job for this annotation

GitHub Actions / unit-test

Missing semicolon

Check warning on line 22 in src/azure/ApiCenter/contracts.ts

View workflow job for this annotation

GitHub Actions / lint

Missing semicolon

export type GeneralApiCenterApi = ApiCenterApi | DataPlaneApiCenterApi;

export function isApiManagement(obj: GeneralApiCenterApi): obj is ApiCenterApi {
const keys = Object.keys(obj) as (keyof ApiCenterApi)[];
return (keys.length === Object.keys({} as ApiCenterApi).length) && keys.every(key => key in obj);
}
export type ApiCenterApi = {
id: string;
location: string;
Expand Down Expand Up @@ -53,7 +59,10 @@ export type ApiCenterEnvironment = {
};

export type GeneralApiCenterApiVersion = ApiCenterApiVersion | DataPlaneApiCenterApiVersion;

export function isApiVersionManagement(obj: GeneralApiCenterApiVersion): obj is ApiCenterApiVersion {
const keys = Object.keys(obj) as (keyof ApiCenterApiVersion)[];
return (keys.length === Object.keys({} as ApiCenterApiVersion).length) && keys.every(key => key in obj);
}
export type ApiCenterApiVersion = {
id: string;
location: string;
Expand Down Expand Up @@ -84,6 +93,11 @@ export type ApiCenterApiDeployment = {

export type GeneralApiCenterApiVersionDefinition = ApiCenterApiVersionDefinition | DataPlaneApiCenterApiVersionDefinition;

export function isDefinitionManagement(obj: GeneralApiCenterApiVersionDefinition): obj is ApiCenterApiVersionDefinition {
const keys = Object.keys(obj) as (keyof ApiCenterApiVersionDefinition)[];
return (keys.length === Object.keys({} as ApiCenterApiVersionDefinition).length) && keys.every(key => key in obj);
}

export type ApiCenterApiVersionDefinition = {
id: string;
location: string;
Expand Down
3 changes: 1 addition & 2 deletions src/azure/azureLogin/azureAuth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,7 @@ export namespace AzureAuth {
type AuthProviderId = "microsoft" | "microsoft-sovereign-cloud";

export function getConfiguredAuthProviderId(): AuthProviderId {
const type = AzureAuth.getConfiguredAzureEnv().name === Environment.AzureCloud.name ? "microsoft" : "microsoft-sovereign-cloud";
return type;
return AzureAuth.getConfiguredAzureEnv().name === Environment.AzureCloud.name ? "microsoft" : "microsoft-sovereign-cloud";
}

export function isReady(provider: AzureSessionProvider): provider is ReadyAzureSessionProvider {
Expand Down
4 changes: 2 additions & 2 deletions src/commands/registerApiSubCommands/registerStepByStep.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { IActionContext } from "@microsoft/vscode-azext-utils";
import * as fse from 'fs-extra';
import * as vscode from 'vscode';
import { ApiCenterService } from "../../azure/ApiCenter/ApiCenterService";
import { ApiCenterApi, ApiCenterApiVersion, ApiCenterApiVersionDefinition, ApiCenterApiVersionDefinitionImport, ApiKind, ApiVersionLifecycleStage, SpecificationName } from "../../azure/ApiCenter/contracts";
import { ApiCenterApi, ApiCenterApiVersion, ApiCenterApiVersionDefinition, ApiCenterApiVersionDefinitionImport, ApiKind, ApiVersionLifecycleStage, SpecificationName, isApiServerManagement } from "../../azure/ApiCenter/contracts";
import { ext } from "../../extensionVariables";
import { ApiCenterTreeItem } from "../../tree/ApiCenterTreeItem";
import { ApisTreeItem } from "../../tree/ApisTreeItem";
Expand All @@ -16,7 +16,7 @@ export async function registerStepByStep(context: IActionContext, node?: ApisTre
const apiCenterNode = await ext.treeDataProvider.showTreeItemPicker<ApiCenterTreeItem>(ApiCenterTreeItem.contextValue, context);
node = apiCenterNode.apisTreeItem;
}
if (!('id' in node.apiCenter)) {
if (!(isApiServerManagement(node.apiCenter))) {
return;
}

Expand Down
8 changes: 4 additions & 4 deletions src/tree/ApiTreeItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Licensed under the MIT license.
import { AzExtParentTreeItem, AzExtTreeItem, IActionContext, TreeItemIconPath } from "@microsoft/vscode-azext-utils";
import * as vscode from 'vscode';
import { GeneralApiCenterApi } from "../azure/ApiCenter/contracts";
import { GeneralApiCenterApi, isApiManagement } from "../azure/ApiCenter/contracts";
import { UiStrings } from "../uiStrings";
import { ApiDeploymentsTreeItem } from "./ApiDeploymentsTreeItem";
import { ApiVersionsTreeItem } from "./ApiVersionsTreeItem";
Expand All @@ -21,7 +21,7 @@ export class ApiTreeItem extends AzExtParentTreeItem {
this._apiCenterName = apiCenterName;
this._apiCenterApi = apiCenterApi;
this.apiVersionsTreeItem = new ApiVersionsTreeItem(this, apiCenterName, apiCenterApi);
if ('id' in apiCenterApi) {
if (isApiManagement(apiCenterApi)) {
this.apiDeploymentsTreeItem = new ApiDeploymentsTreeItem(this, apiCenterName, apiCenterApi);
}
}
Expand All @@ -31,11 +31,11 @@ export class ApiTreeItem extends AzExtParentTreeItem {
}

public get id(): string {
return 'id' in this._apiCenterApi ? this._apiCenterApi.id : this._apiCenterApi.name;
return isApiManagement(this._apiCenterApi) ? this._apiCenterApi.id : this._apiCenterApi.name;
}

public get label(): string {
return 'id' in this._apiCenterApi ? this._apiCenterApi.properties.title : this._apiCenterApi.title;
return isApiManagement(this._apiCenterApi) ? this._apiCenterApi.properties.title : this._apiCenterApi.title;
}

public hasMoreChildrenImpl(): boolean {
Expand Down
8 changes: 4 additions & 4 deletions src/tree/ApiVersionDefinitionTreeItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Licensed under the MIT license.
import { AzExtParentTreeItem, AzExtTreeItem, TreeItemIconPath } from "@microsoft/vscode-azext-utils";
import * as vscode from 'vscode';
import { GeneralApiCenterApiVersionDefinition } from "../azure/ApiCenter/contracts";
import { GeneralApiCenterApiVersionDefinition, isDefinitionManagement } from "../azure/ApiCenter/contracts";

export class ApiVersionDefinitionTreeItem extends AzExtTreeItem {
public static contextValue: string = "azureApiCenterApiVersionDefinitionTreeItem";
Expand All @@ -15,7 +15,7 @@ export class ApiVersionDefinitionTreeItem extends AzExtTreeItem {
public apiCenterApiVersionName: string,
public apiCenterApiVersionDefinition: GeneralApiCenterApiVersionDefinition) {
super(parent);
if ('id' in apiCenterApiVersionDefinition) {
if (isDefinitionManagement(apiCenterApiVersionDefinition)) {
this.contextValue += "-" + apiCenterApiVersionDefinition.properties.specification.name.toLowerCase();
} else {
this.contextValue = ApiVersionDefinitionTreeItem.dataPlaneContextValue + "-" + apiCenterApiVersionDefinition.name.toLowerCase();
Expand All @@ -27,10 +27,10 @@ export class ApiVersionDefinitionTreeItem extends AzExtTreeItem {
}

public get id(): string {
return 'id' in this.apiCenterApiVersionDefinition ? this.apiCenterApiVersionDefinition.id : this.apiCenterApiVersionDefinition.name
return isDefinitionManagement(this.apiCenterApiVersionDefinition) ? this.apiCenterApiVersionDefinition.id : this.apiCenterApiVersionDefinition.name
}

public get label(): string {
return 'id' in this.apiCenterApiVersionDefinition ? this.apiCenterApiVersionDefinition.properties.title : this.apiCenterApiVersionDefinition.name;
return isDefinitionManagement(this.apiCenterApiVersionDefinition) ? this.apiCenterApiVersionDefinition.properties.title : this.apiCenterApiVersionDefinition.name;
}
}
4 changes: 2 additions & 2 deletions src/tree/ApiVersionDefinitionsTreeItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { AzExtParentTreeItem, AzExtTreeItem, IActionContext, TreeItemIconPath }
import * as vscode from 'vscode';
import { ApiCenterDataPlaneService } from "../azure/ApiCenter/ApiCenterDataPlaneAPIs";
import { ApiCenterService } from "../azure/ApiCenter/ApiCenterService";
import { GeneralApiCenterApiVersion, GeneralApiCenterApiVersionDefinition } from "../azure/ApiCenter/contracts";
import { GeneralApiCenterApiVersion, GeneralApiCenterApiVersionDefinition, isApiVersionManagement } from "../azure/ApiCenter/contracts";
import { UiStrings } from "../uiStrings";
import { ApiVersionDefinitionTreeItem } from "./ApiVersionDefinitionTreeItem";

Expand Down Expand Up @@ -54,7 +54,7 @@ export class ApiVersionDefinitionsTreeItem extends AzExtParentTreeItem {
}

private async getDefinitions(): Promise<GeneralApiCenterApiVersionDefinition[]> {
if ('id' in this._apiCenterApiVersion) {
if (isApiVersionManagement(this._apiCenterApiVersion)) {
const resourceGroupName = getResourceGroupFromId(this._apiCenterApiVersion.id);
const apiCenterService = new ApiCenterService(this.parent?.subscription!, resourceGroupName, this._apiCenterName);

Expand Down
6 changes: 3 additions & 3 deletions src/tree/ApiVersionTreeItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Licensed under the MIT license.
import { AzExtParentTreeItem, AzExtTreeItem, IActionContext, TreeItemIconPath } from "@microsoft/vscode-azext-utils";
import * as vscode from 'vscode';
import { GeneralApiCenterApiVersion } from "../azure/ApiCenter/contracts";
import { GeneralApiCenterApiVersion, isApiVersionManagement } from "../azure/ApiCenter/contracts";
import { UiStrings } from "../uiStrings";
import { ApiVersionDefinitionsTreeItem } from "./ApiVersionDefinitionsTreeItem";

Expand All @@ -28,11 +28,11 @@ export class ApiVersionTreeItem extends AzExtParentTreeItem {
}

public get id(): string {
return 'id' in this._apiCenterApiVersion ? this._apiCenterApiVersion.id : this._apiCenterApiVersion.name;
return isApiVersionManagement(this._apiCenterApiVersion) ? this._apiCenterApiVersion.id : this._apiCenterApiVersion.name;
}

public get label(): string {
return 'id' in this._apiCenterApiVersion ? this._apiCenterApiVersion.properties.title : this._apiCenterApiVersion.title;
return isApiVersionManagement(this._apiCenterApiVersion) ? this._apiCenterApiVersion.properties.title : this._apiCenterApiVersion.title;
}

public hasMoreChildrenImpl(): boolean {
Expand Down
4 changes: 2 additions & 2 deletions src/tree/ApiVersionsTreeItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { AzExtParentTreeItem, AzExtTreeItem, IActionContext, TreeItemIconPath }
import * as vscode from 'vscode';
import { ApiCenterDataPlaneService } from "../azure/ApiCenter/ApiCenterDataPlaneAPIs";
import { ApiCenterService } from "../azure/ApiCenter/ApiCenterService";
import { GeneralApiCenterApi, GeneralApiCenterApiVersion } from "../azure/ApiCenter/contracts";
import { GeneralApiCenterApi, GeneralApiCenterApiVersion, isApiServerManagement } from "../azure/ApiCenter/contracts";
import { UiStrings } from "../uiStrings";
import { ApiVersionTreeItem } from "./ApiVersionTreeItem";

Expand Down Expand Up @@ -41,7 +41,7 @@ export class ApiVersionsTreeItem extends AzExtParentTreeItem {
}

private async getApiVersions(): Promise<GeneralApiCenterApiVersion[]> {
if ('id' in this._apiCenterApi) {
if (isApiServerManagement(this._apiCenterApi)) {
const resourceGroupName = getResourceGroupFromId(this._apiCenterApi.id);
const apiCenterService = new ApiCenterService(this.parent?.subscription!, resourceGroupName, this._apiCenterName);
const apis = await apiCenterService.getApiCenterApiVersions(this._apiCenterApi.name);
Expand Down
Loading

0 comments on commit 9f7d27f

Please sign in to comment.