UNPKG

fastman

Version:

快速api测试及文档生成

79 lines (72 loc) 2.84 kB
/** * @license * Copyright 2017 Red Hat * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import {OasDocument} from "../models/document.model"; import {Oas20Document} from "../models/2.0/document.model"; import {Oas20JS2ModelReader, Oas30JS2ModelReader} from "../readers/js2model.reader"; import {Oas30Document} from "../models/3.0/document.model"; /** * The main factory for creating new OAS Documents. This can be used to create a new, empty * document. It can also be used to parse */ export class OasDocumentFactory { /** * Creates a new, empty instance of an OAS document. * @param oasVersion * @return {OasDocument} */ public createEmpty(oasVersion: string): OasDocument { if (oasVersion === "2.0") { return new Oas20Document(); } if (oasVersion.indexOf("3.") === 0) { return new Oas30Document(); } throw new Error("Unsupported OAS version: " + oasVersion); } /** * Reads the given object and creates a valid OAS document model. * @param oasObject * @return {Oas20Document} */ public createFromObject(oasObject: any): OasDocument { if (oasObject.swagger && oasObject.swagger === "2.0") { let reader: Oas20JS2ModelReader = new Oas20JS2ModelReader(); return reader.read(oasObject); } else if (oasObject.openapi && oasObject.openapi.indexOf("3.") === 0) { let reader: Oas30JS2ModelReader = new Oas30JS2ModelReader(); return reader.read(oasObject); } else { let ver: string = oasObject.swagger; if (!ver) { ver = oasObject.openapi; } throw new Error("Unsupported OAS version: " + ver); } } /** * Parses the given OAS definition source, parses it into an appropriate data model, and * returns it. The factory will figure out what version of the data model to create based * on the content of the source. * * @param oasDefinitionSource * @return {null} */ public createFromJson(oasDefinition: string): OasDocument { let jsObj: any = JSON.parse(oasDefinition); return this.createFromObject(jsObj); } }