UNPKG

webapi-ng2

Version:

ASP.NET Core Web API client generator for Angular 2

86 lines (69 loc) 2.57 kB
import { Attribute, AttributeParameter, Controller, EnumValue, Operation, OperationParameter, Property, Schema, SchemaType, Specification } from '../specification'; export class SwaggerCoreAdapter { public getSpecification(response: any): Specification { let controllerOperations: { [name: string]: Operation[] } = {}; for (let pathKey in response.paths) { let path = response.paths[pathKey]; for (let method in path) { let operation = path[method]; let controllerName = operation['core:controller']; let operationName = operation['core:name']; if (controllerOperations[controllerName] == undefined) { controllerOperations[controllerName] = []; } let controller = controllerOperations[controllerName]; let parameters = operation['core:parameters']; if (parameters != undefined && typeof parameters === 'string') { parameters = JSON.parse(parameters); } controller.push({ method: method, name: operationName, parameters: parameters, path: pathKey, responseType: operation['core:return-type'], summary: operation['summary'] }); } } let schema: Schema[] = []; let coreTypes = response['core:types']; for (let coreTypeName in coreTypes) { let coreType = coreTypes[coreTypeName]; if (typeof coreType === 'string') { coreType = JSON.parse(coreType); } schema.push({ attributes: coreType.attributes, extends: coreType.extends, name: coreType.name, properties: coreType.properties, type: coreType.type == 'enum' ? SchemaType.Enumeration : SchemaType.Object, values: coreType.enumValues }); } let controllers: Controller[] = []; for (let controllerName in controllerOperations) { controllers.push({ name: controllerName, operations: controllerOperations[controllerName] }); } let specification: Specification = { controllers: controllers, schema: schema }; return specification; } }