UNPKG

parse-openapi

Version:

OpenAPI v3 parser

72 lines (71 loc) 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOperation = void 0; const getOperationErrors_1 = require("./getOperationErrors"); const getOperationName_1 = require("./getOperationName"); const getOperationParameters_1 = require("./getOperationParameters"); const getOperationRequestBody_1 = require("./getOperationRequestBody"); const getOperationResponseHeader_1 = require("./getOperationResponseHeader"); const getOperationResponses_1 = require("./getOperationResponses"); const getOperationResults_1 = require("./getOperationResults"); const getRef_1 = require("./getRef"); const getServiceName_1 = require("./getServiceName"); const sortByRequired_1 = require("./sortByRequired"); const getOperation = (openApi, url, method, tag, op, pathParams) => { const serviceName = (0, getServiceName_1.getServiceName)(tag); const operationName = (0, getOperationName_1.getOperationName)(url, method, op.operationId); // Create a new operation object for this method. const operation = { service: serviceName, name: operationName, summary: op.summary || null, description: op.description || null, deprecated: op.deprecated === true, method: method.toUpperCase(), path: url, parameters: [...pathParams.parameters], parametersPath: [...pathParams.parametersPath], parametersQuery: [...pathParams.parametersQuery], parametersForm: [...pathParams.parametersForm], parametersHeader: [...pathParams.parametersHeader], parametersCookie: [...pathParams.parametersCookie], parametersBody: pathParams.parametersBody, imports: [], errors: [], results: [], responseHeader: null, }; // Parse the operation parameters (path, query, body, etc). if (op.parameters) { const parameters = (0, getOperationParameters_1.getOperationParameters)(openApi, op.parameters); operation.imports.push(...parameters.imports); operation.parameters.push(...parameters.parameters); operation.parametersPath.push(...parameters.parametersPath); operation.parametersQuery.push(...parameters.parametersQuery); operation.parametersForm.push(...parameters.parametersForm); operation.parametersHeader.push(...parameters.parametersHeader); operation.parametersCookie.push(...parameters.parametersCookie); operation.parametersBody = parameters.parametersBody; } if (op.requestBody) { const requestBodyDef = (0, getRef_1.getRef)(openApi, op.requestBody); const requestBody = (0, getOperationRequestBody_1.getOperationRequestBody)(openApi, requestBodyDef); operation.imports.push(...requestBody.imports); operation.parameters.push(requestBody); operation.parametersBody = requestBody; } // Parse the operation responses. if (op.responses) { const operationResponses = (0, getOperationResponses_1.getOperationResponses)(openApi, op.responses); const operationResults = (0, getOperationResults_1.getOperationResults)(operationResponses); operation.errors = (0, getOperationErrors_1.getOperationErrors)(operationResponses); operation.responseHeader = (0, getOperationResponseHeader_1.getOperationResponseHeader)(operationResults); operationResults.forEach(operationResult => { operation.results.push(operationResult); operation.imports.push(...operationResult.imports); }); } operation.parameters = operation.parameters.sort(sortByRequired_1.sortByRequired); return operation; }; exports.getOperation = getOperation;