apim-developer-portal4
Version:
API management developer portal
42 lines (33 loc) • 1.46 kB
text/typescript
import { Contract } from "@paperbits/common";
import { IModelBinder } from "@paperbits/common/editing";
import { IPermalinkResolver } from "@paperbits/common/permalinks";
import { ProductApisModel } from "./productApisModel";
import { ProductApisContract } from "./productApisContract";
export class ProductApisModelBinder implements IModelBinder<ProductApisModel> {
constructor(private readonly permalinkResolver: IPermalinkResolver) { }
public canHandleContract(contract: Contract): boolean {
return contract.type === "product-apis";
}
public canHandleModel(model: Object): boolean {
return model instanceof ProductApisModel;
}
public async contractToModel(contract: ProductApisContract): Promise<ProductApisModel> {
const model = new ProductApisModel();
if (contract.detailsPageHyperlink) {
model.detailsPageHyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.detailsPageHyperlink);
}
return model;
}
public modelToContract(model: ProductApisModel): ProductApisContract {
const contract: ProductApisContract = {
type: "product-apis",
detailsPageHyperlink: model.detailsPageHyperlink
? {
target: model.detailsPageHyperlink.target,
targetKey: model.detailsPageHyperlink.targetKey
}
: null
};
return contract;
}
}