apim-developer-portal2
Version:
API management developer portal
41 lines (32 loc) • 1.52 kB
text/typescript
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;
}
}