apim-developer-portal2
Version:
API management developer portal
39 lines (31 loc) • 1.64 kB
text/typescript
import { OAuthService } from "./../../../services/oauthService";
import { Contract } from "@paperbits/common";
import { IModelBinder } from "@paperbits/common/editing";
import { OperationDetailsModel } from "./operationDetailsModel";
import { OperationDetailsContract } from "./operationDetailsContract";
export class OperationDetailsModelBinder implements IModelBinder<OperationDetailsModel> {
constructor(private readonly oauthService: OAuthService) { }
public canHandleContract(contract: Contract): boolean {
return contract.type === "operationDetails";
}
public canHandleModel(model: Object): boolean {
return model instanceof OperationDetailsModel;
}
public async contractToModel(contract: OperationDetailsContract): Promise<OperationDetailsModel> {
const model = new OperationDetailsModel();
model.enableConsole = contract.enableConsole === true || contract.enableConsole === undefined;
model.enableScrollTo = contract.enableScrollTo !== undefined && contract.enableScrollTo === true;
model.defaultSchemaView = contract.defaultSchemaView || "table";
model.authorizationServers = await this.oauthService.getOAuthServers();
return model;
}
public modelToContract(model: OperationDetailsModel): Contract {
const contract: OperationDetailsContract = {
type: "operationDetails",
enableConsole: model.enableConsole,
enableScrollTo: model.enableScrollTo,
defaultSchemaView: model.defaultSchemaView
};
return contract;
}
}