fastman
Version:
快速api测试及文档生成
676 lines (615 loc) • 20.7 kB
text/typescript
/**
* @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 {IOas30NodeVisitor, IOasNodeVisitor} from "../../visitors/visitor.iface";
import {OasExtensibleNode} from "../enode.model";
import {Oas30SchemaDefinition} from "./schema.model";
import {Oas30ResponseDefinition} from "./response.model";
import {Oas30ParameterDefinition} from "./parameter.model";
import {Oas30ExampleDefinition} from "./example.model";
import {Oas30RequestBodyDefinition} from "./request-body.model";
import {Oas30HeaderDefinition} from "./header.model";
import {Oas30SecurityScheme} from "./security-scheme.model";
import {Oas30LinkDefinition} from "./link.model";
import {Oas30CallbackDefinition} from "./callback.model";
/**
* Models an OAS 3.0 Components object. Example:
*
* {
* "schemas": {
* "Category": {
* "type": "object",
* "properties": {
* "id": {
* "type": "integer",
* "format": "int64"
* },
* "name": {
* "type": "string"
* }
* }
* },
* "Tag": {
* "type": "object",
* "properties": {
* "id": {
* "type": "integer",
* "format": "int64"
* },
* "name": {
* "type": "string"
* }
* }
* }
* }
* },
* "parameters": {
* "skipParam": {
* "name": "skip",
* "in": "query",
* "description": "number of items to skip",
* "required": true,
* "schema": {
* "type": "integer",
* "format": "int32"
* }
* },
* "limitParam": {
* "name": "limit",
* "in": "query",
* "description": "max records to return",
* "required": true,
* "schema" : {
* "type": "integer",
* "format": "int32"
* }
* }
* },
* "responses": {
* "NotFound": {
* "description": "Entity not found."
* },
* "IllegalInput": {
* "description": "Illegal input for operation."
* },
* "GeneralError": {
* "description": "General Error",
* "content": {
* "application/json": {
* "schema": {
* "$ref": "#/components/schemas/GeneralError"
* }
* }
* }
* }
* },
* "securitySchemes": {
* "api_key": {
* "type": "apiKey",
* "name": "api_key",
* "in": "header"
* },
* "petstore_auth": {
* "type": "oauth2",
* "flows": {
* "implicit": {
* "authorizationUrl": "http://example.org/api/oauth/dialog",
* "scopes": {
* "write:pets": "modify pets in your account",
* "read:pets": "read your pets"
* }
* }
* }
* }
* }
* }
*/
export class Oas30Components extends OasExtensibleNode {
public schemas: Oas30SchemaComponents = new Oas30SchemaComponents();
public responses: Oas30ResponseComponents = new Oas30ResponseComponents();
public parameters: Oas30ParameterComponents = new Oas30ParameterComponents();
public examples: Oas30ExampleComponents = new Oas30ExampleComponents();
public requestBodies: Oas30RequestBodyComponents = new Oas30RequestBodyComponents();
public headers: Oas30HeaderComponents = new Oas30HeaderComponents();
public securitySchemes: Oas30SecuritySchemeComponents = new Oas30SecuritySchemeComponents();
public links: Oas30LinkComponents = new Oas30LinkComponents();
public callbacks: Oas30CallbackComponents = new Oas30CallbackComponents();
/**
* Accepts the given OAS node visitor and calls the appropriate method on it to visit this node.
* @param visitor
*/
public accept(visitor: IOasNodeVisitor): void {
let viz: IOas30NodeVisitor = visitor as IOas30NodeVisitor;
viz.visitComponents(this);
}
/**
* Creates a schema definition.
* @param name
* @return {Oas30SchemaDefinition}
*/
public createSchemaDefinition(name: string): Oas30SchemaDefinition {
let rval: Oas30SchemaDefinition = new Oas30SchemaDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a schema definition.
* @param name
* @param schemaDefinition
*/
public addSchemaDefinition(name: string, schemaDefinition: Oas30SchemaDefinition): void {
this.schemas[name] = schemaDefinition;
}
/**
* Gets a single schema definition by name.
* @param name
* @return {Oas30SchemaDefinition}
*/
public getSchemaDefinition(name: string): Oas30SchemaDefinition {
return this.schemas[name];
}
/**
* Removes a single schema definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30SchemaDefinition}
*/
public removeSchemaDefinition(name: string): Oas30SchemaDefinition {
let rval: Oas30SchemaDefinition = this.schemas[name];
if (rval) {
delete this.schemas[name];
}
return rval;
}
/**
* Gets a list of all schema definitions.
* @return {Oas30SchemaDefinition[]}
*/
public getSchemaDefinitions(): Oas30SchemaDefinition[] {
let rval: Oas30SchemaDefinition[] = [];
for (let name in this.schemas) {
rval.push(this.schemas[name]);
}
return rval;
}
/**
* Creates a response definition.
* @param name
* @return {Oas30ResponseDefinition}
*/
public createResponseDefinition(name: string): Oas30ResponseDefinition {
let rval: Oas30ResponseDefinition = new Oas30ResponseDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a response definition.
* @param name
* @param responseDefinition
*/
public addResponseDefinition(name: string, responseDefinition: Oas30ResponseDefinition): void {
this.responses[name] = responseDefinition;
}
/**
* Gets a single response definition by name.
* @param name
* @return {Oas30ResponseDefinition}
*/
public getResponseDefinition(name: string): Oas30ResponseDefinition {
return this.responses[name];
}
/**
* Removes a single response definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30ResponseDefinition}
*/
public removeResponseDefinition(name: string): Oas30ResponseDefinition {
let rval: Oas30ResponseDefinition = this.responses[name];
if (rval) {
delete this.responses[name];
}
return rval;
}
/**
* Gets a list of all response definitions.
* @return {Oas30ResponseDefinition[]}
*/
public getResponseDefinitions(): Oas30ResponseDefinition[] {
let rval: Oas30ResponseDefinition[] = [];
for (let name in this.responses) {
rval.push(this.responses[name]);
}
return rval;
}
/**
* Creates a parameter definition.
* @param name
* @return {Oas30ParameterDefinition}
*/
public createParameterDefinition(name: string): Oas30ParameterDefinition {
let rval: Oas30ParameterDefinition = new Oas30ParameterDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a parameter definition.
* @param name
* @param parameterDefinition
*/
public addParameterDefinition(name: string, parameterDefinition: Oas30ParameterDefinition): void {
this.parameters[name] = parameterDefinition;
}
/**
* Gets a single parameter definition by name.
* @param name
* @return {Oas30ParameterDefinition}
*/
public getParameterDefinition(name: string): Oas30ParameterDefinition {
return this.parameters[name];
}
/**
* Removes a single parameter definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30ParameterDefinition}
*/
public removeParameterDefinition(name: string): Oas30ParameterDefinition {
let rval: Oas30ParameterDefinition = this.parameters[name];
if (rval) {
delete this.parameters[name];
}
return rval;
}
/**
* Gets a list of all parameter definitions.
* @return {Oas30ParameterDefinition[]}
*/
public getParameterDefinitions(): Oas30ParameterDefinition[] {
let rval: Oas30ParameterDefinition[] = [];
for (let name in this.parameters) {
rval.push(this.parameters[name]);
}
return rval;
}
/**
* Creates a example definition.
* @param name
* @return {Oas30ExampleDefinition}
*/
public createExampleDefinition(name: string): Oas30ExampleDefinition {
let rval: Oas30ExampleDefinition = new Oas30ExampleDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a example definition.
* @param name
* @param exampleDefinition
*/
public addExampleDefinition(name: string, exampleDefinition: Oas30ExampleDefinition): void {
this.examples[name] = exampleDefinition;
}
/**
* Gets a single example definition by name.
* @param name
* @return {Oas30ExampleDefinition}
*/
public getExampleDefinition(name: string): Oas30ExampleDefinition {
return this.examples[name];
}
/**
* Removes a single example definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30ExampleDefinition}
*/
public removeExampleDefinition(name: string): Oas30ExampleDefinition {
let rval: Oas30ExampleDefinition = this.examples[name];
if (rval) {
delete this.examples[name];
}
return rval;
}
/**
* Gets a list of all example definitions.
* @return {Oas30ExampleDefinition[]}
*/
public getExampleDefinitions(): Oas30ExampleDefinition[] {
let rval: Oas30ExampleDefinition[] = [];
for (let name in this.examples) {
rval.push(this.examples[name]);
}
return rval;
}
/**
* Creates a request body definition.
* @param name
* @return {Oas30RequestBodyDefinition}
*/
public createRequestBodyDefinition(name: string): Oas30RequestBodyDefinition {
let rval: Oas30RequestBodyDefinition = new Oas30RequestBodyDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a request body definition.
* @param name
* @param requestBodyDefinition
*/
public addRequestBodyDefinition(name: string, requestBodyDefinition: Oas30RequestBodyDefinition): void {
this.requestBodies[name] = requestBodyDefinition;
}
/**
* Gets a single request body definition by name.
* @param name
* @return {Oas30RequestBodyDefinition}
*/
public getRequestBodyDefinition(name: string): Oas30RequestBodyDefinition {
return this.requestBodies[name];
}
/**
* Removes a single request body definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30RequestBodyDefinition}
*/
public removeRequestBodyDefinition(name: string): Oas30RequestBodyDefinition {
let rval: Oas30RequestBodyDefinition = this.requestBodies[name];
if (rval) {
delete this.requestBodies[name];
}
return rval;
}
/**
* Gets a list of all request body definitions.
* @return {Oas30RequestBodyDefinition[]}
*/
public getRequestBodyDefinitions(): Oas30RequestBodyDefinition[] {
let rval: Oas30RequestBodyDefinition[] = [];
for (let name in this.requestBodies) {
rval.push(this.requestBodies[name]);
}
return rval;
}
/**
* Creates a header definition.
* @param name
* @return {Oas30HeaderDefinition}
*/
public createHeaderDefinition(name: string): Oas30HeaderDefinition {
let rval: Oas30HeaderDefinition = new Oas30HeaderDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a header definition.
* @param name
* @param headerDefinition
*/
public addHeaderDefinition(name: string, headerDefinition: Oas30HeaderDefinition): void {
this.headers[name] = headerDefinition;
}
/**
* Gets a single header definition by name.
* @param name
* @return {Oas30HeaderDefinition}
*/
public getHeaderDefinition(name: string): Oas30HeaderDefinition {
return this.headers[name];
}
/**
* Removes a single header definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30HeaderDefinition}
*/
public removeHeaderDefinition(name: string): Oas30HeaderDefinition {
let rval: Oas30HeaderDefinition = this.headers[name];
if (rval) {
delete this.headers[name];
}
return rval;
}
/**
* Gets a list of all header definitions.
* @return {Oas30HeaderDefinition[]}
*/
public getHeaderDefinitions(): Oas30HeaderDefinition[] {
let rval: Oas30HeaderDefinition[] = [];
for (let name in this.headers) {
rval.push(this.headers[name]);
}
return rval;
}
/**
* Creates a security scheme definition.
* @param name
* @return {Oas30SecurityScheme}
*/
public createSecurityScheme(name: string): Oas30SecurityScheme {
let rval: Oas30SecurityScheme = new Oas30SecurityScheme(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a security scheme definition.
* @param name
* @param securityScheme
*/
public addSecurityScheme(name: string, securityScheme: Oas30SecurityScheme): void {
this.securitySchemes[name] = securityScheme;
}
/**
* Gets a single security scheme definition by name.
* @param name
* @return {Oas30SecurityScheme}
*/
public getSecurityScheme(name: string): Oas30SecurityScheme {
return this.securitySchemes[name];
}
/**
* Removes a single security scheme definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30SecurityScheme}
*/
public removeSecurityScheme(name: string): Oas30SecurityScheme {
let rval: Oas30SecurityScheme = this.securitySchemes[name];
if (rval) {
delete this.securitySchemes[name];
}
return rval;
}
/**
* Gets a list of all security scheme definitions.
* @return {Oas30SecurityScheme[]}
*/
public getSecuritySchemes(): Oas30SecurityScheme[] {
let rval: Oas30SecurityScheme[] = [];
for (let name in this.securitySchemes) {
rval.push(this.securitySchemes[name]);
}
return rval;
}
/**
* Creates a link definition.
* @param name
* @return {Oas30LinkDefinition}
*/
public createLinkDefinition(name: string): Oas30LinkDefinition {
let rval: Oas30LinkDefinition = new Oas30LinkDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a link definition.
* @param name
* @param linkDefinition
*/
public addLinkDefinition(name: string, linkDefinition: Oas30LinkDefinition): void {
this.links[name] = linkDefinition;
}
/**
* Gets a single link definition by name.
* @param name
* @return {Oas30LinkDefinition}
*/
public getLinkDefinition(name: string): Oas30LinkDefinition {
return this.links[name];
}
/**
* Removes a single link definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30LinkDefinition}
*/
public removeLinkDefinition(name: string): Oas30LinkDefinition {
let rval: Oas30LinkDefinition = this.links[name];
if (rval) {
delete this.links[name];
}
return rval;
}
/**
* Gets a list of all link definitions.
* @return {Oas30LinkDefinition[]}
*/
public getLinkDefinitions(): Oas30LinkDefinition[] {
let rval: Oas30LinkDefinition[] = [];
for (let name in this.links) {
rval.push(this.links[name]);
}
return rval;
}
/**
* Creates a callback definition.
* @param name
* @return {Oas30CallbackDefinition}
*/
public createCallbackDefinition(name: string): Oas30CallbackDefinition {
let rval: Oas30CallbackDefinition = new Oas30CallbackDefinition(name);
rval._ownerDocument = this._ownerDocument;
rval._parent = this;
return rval;
}
/**
* Adds a callback definition.
* @param name
* @param callbackDefinition
*/
public addCallbackDefinition(name: string, callbackDefinition: Oas30CallbackDefinition): void {
this.callbacks[name] = callbackDefinition;
}
/**
* Gets a single callback definition by name.
* @param name
* @return {Oas30CallbackDefinition}
*/
public getCallbackDefinition(name: string): Oas30CallbackDefinition {
return this.callbacks[name];
}
/**
* Removes a single callback definition and returns it. This may return null or undefined if none found.
* @param name
* @return {Oas30CallbackDefinition}
*/
public removeCallbackDefinition(name: string): Oas30CallbackDefinition {
let rval: Oas30CallbackDefinition = this.callbacks[name];
if (rval) {
delete this.callbacks[name];
}
return rval;
}
/**
* Gets a list of all callback definitions.
* @return {Oas30CallbackDefinition[]}
*/
public getCallbackDefinitions(): Oas30CallbackDefinition[] {
let rval: Oas30CallbackDefinition[] = [];
for (let name in this.callbacks) {
rval.push(this.callbacks[name]);
}
return rval;
}
}
export class Oas30SchemaComponents {
[key: string]: Oas30SchemaDefinition;
}
export class Oas30ResponseComponents {
[key: string]: Oas30ResponseDefinition;
}
export class Oas30ParameterComponents {
[key: string]: Oas30ParameterDefinition;
}
export class Oas30ExampleComponents {
[key: string]: Oas30ExampleDefinition;
}
export class Oas30RequestBodyComponents {
[key: string]: Oas30RequestBodyDefinition;
}
export class Oas30HeaderComponents {
[key: string]: Oas30HeaderDefinition;
}
export class Oas30SecuritySchemeComponents {
[key: string]: Oas30SecurityScheme;
}
export class Oas30LinkComponents {
[key: string]: Oas30LinkDefinition;
}
export class Oas30CallbackComponents {
[key: string]: Oas30CallbackDefinition;
}