Skip to content

Commit

Permalink
feat: update
Browse files Browse the repository at this point in the history
  • Loading branch information
wenytang-ms committed Jul 31, 2024
1 parent c0a09d9 commit 58cdbc2
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 22 deletions.
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 / 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
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
4 changes: 2 additions & 2 deletions src/tree/ApisTreeItem.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 { GeneralApiCenter, GeneralApiCenterApi } from "../azure/ApiCenter/contracts";
import { GeneralApiCenter, GeneralApiCenterApi, isApiServerManagement } from "../azure/ApiCenter/contracts";
import { UiStrings } from "../uiStrings";
import { ApiTreeItem } from "./ApiTreeItem";
export class ApisTreeItem extends AzExtParentTreeItem {
Expand Down Expand Up @@ -50,7 +50,7 @@ export class ApisTreeItem extends AzExtParentTreeItem {
}

private async getApis(): Promise<GeneralApiCenterApi[]> {
if ('id' in this.apiCenter) {
if (isApiServerManagement(this.apiCenter)) {
const resourceGroupName = getResourceGroupFromId(this.apiCenter.id);
const apiCenterService = new ApiCenterService(this.parent?.subscription!, resourceGroupName, this.apiCenter.name);
const apis = await apiCenterService.getApiCenterApis(this.searchContent);
Expand Down

0 comments on commit 58cdbc2

Please sign in to comment.