UNPKG

parse-openapi

Version:

OpenAPI v3 parser

92 lines (91 loc) 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOperationResponse = void 0; const getPattern_1 = require("../utils/getPattern"); const getContent_1 = require("./getContent"); const getModel_1 = require("./getModel"); const getRef_1 = require("./getRef"); const getType_1 = require("./getType"); const getOperationResponse = (openApi, response, responseCode) => { const operationResponse = { in: 'response', name: '', code: responseCode, description: response.description || null, export: 'generic', type: 'any', base: 'any', template: null, link: null, isDefinition: false, isReadOnly: false, isRequired: false, isNullable: false, imports: [], enum: [], enums: [], properties: [], }; if (response.content) { const content = (0, getContent_1.getContent)(openApi, response.content); if (content) { if (content.schema.$ref?.startsWith('#/components/responses/')) { content.schema = (0, getRef_1.getRef)(openApi, content.schema); } if (content.schema.$ref) { const model = (0, getType_1.getType)(content.schema.$ref); operationResponse.export = 'reference'; operationResponse.type = model.type; operationResponse.base = model.base; operationResponse.template = model.template; operationResponse.imports.push(...model.imports); return operationResponse; } else { const model = (0, getModel_1.getModel)(openApi, content.schema); operationResponse.export = model.export; operationResponse.type = model.type; operationResponse.base = model.base; operationResponse.template = model.template; operationResponse.link = model.link; operationResponse.isReadOnly = model.isReadOnly; operationResponse.isRequired = model.isRequired; operationResponse.isNullable = model.isNullable; operationResponse.format = model.format; operationResponse.maximum = model.maximum; operationResponse.exclusiveMaximum = model.exclusiveMaximum; operationResponse.minimum = model.minimum; operationResponse.exclusiveMinimum = model.exclusiveMinimum; operationResponse.multipleOf = model.multipleOf; operationResponse.maxLength = model.maxLength; operationResponse.minLength = model.minLength; operationResponse.maxItems = model.maxItems; operationResponse.minItems = model.minItems; operationResponse.uniqueItems = model.uniqueItems; operationResponse.maxProperties = model.maxProperties; operationResponse.minProperties = model.minProperties; operationResponse.pattern = (0, getPattern_1.getPattern)(model.pattern); operationResponse.imports.push(...model.imports); operationResponse.enum.push(...model.enum); operationResponse.enums.push(...model.enums); operationResponse.properties.push(...model.properties); return operationResponse; } } } // We support basic properties from response headers, since both // fetch and XHR client just support string types. if (response.headers) { for (const name in response.headers) { if (response.headers.hasOwnProperty(name)) { operationResponse.in = 'header'; operationResponse.name = name; operationResponse.type = 'string'; operationResponse.base = 'string'; return operationResponse; } } } return operationResponse; }; exports.getOperationResponse = getOperationResponse;