UNPKG

apim-developer-portal2

Version:

API management developer portal

41 lines (32 loc) 1.52 kB
import { Contract } from "@paperbits/common"; import { IModelBinder } from "@paperbits/common/editing"; import { HistoryOfApiModel } from "./historyOfApiModel"; import { HistoryOfApiContract } from "./historyOfApiContract"; import { IPermalinkResolver } from "@paperbits/common/permalinks/IPermalinkResolver"; export class HistoryOfApiModelBinder implements IModelBinder<HistoryOfApiModel> { constructor(private readonly permalinkResolver: IPermalinkResolver) { } public canHandleModel(model: Object): boolean { return model instanceof HistoryOfApiModel; } public async contractToModel(contract: HistoryOfApiContract): Promise<HistoryOfApiModel> { const model = new HistoryOfApiModel(); if (contract.detailsPageHyperlink) { model.detailsPageHyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.detailsPageHyperlink); } return model; } public canHandleContract(contract: Contract): boolean { return contract.type === "historyOfApi"; } public modelToContract(model: HistoryOfApiModel): Contract { const contract: HistoryOfApiContract = { type: "historyOfApi", detailsPageHyperlink: model.detailsPageHyperlink ? { target: model.detailsPageHyperlink.target, targetKey: model.detailsPageHyperlink.targetKey } : null }; return contract; } }