UNPKG

@igli.kokici/st-open-api

Version:

Generates API client SDKs from an OpenAPI specification written in OpenAPI version 3.x.x

68 lines 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var get_property_1 = require("./get-property"); var fs_1 = require("fs"); var path_1 = require("path"); var config_1 = require("./config"); var formatText_1 = require("./formatText"); exports.createResponseInterfaces = function (operationId, responses) { var reference = config_1.configuration.getReference(); var folder = config_1.configuration.getFolderManager(); var success = responses['200'] || responses['201']; // TODO: Refactor me !!! if (!!success && !!success.content) { var successContent = success.content; var isJson = false; var responseType = void 0; var _import = void 0; var isPlaintext = !!successContent['text/plain']; if (isPlaintext) { responseType = "string"; } var isDownload = !!successContent['application/octet-stream']; if (!!successContent['application/json']) { isJson = true; var responseSchema = success.content['application/json'].schema; if (responseSchema.$ref) { var importAndType = reference.getImportAndTypeByRef(responseSchema.$ref, folder.getServiceFolder()); responseType = importAndType.className; _import = importAndType.import; } else { var schemaName = operationId + "Response"; var className = 'I' + formatText_1.formatText(schemaName, 'ANY', 'PascalCase'); var interfaceOrEnumeration = get_property_1.getInterfaceOrEnumFromSchema(className, schemaName, responseSchema, folder.getInterfaceResponseFolder()); if (!!interfaceOrEnumeration) { var rendered = interfaceOrEnumeration.render(); fs_1.appendFileSync(path_1.join(folder.getInterfaceResponseFolder(), rendered.fileName + ".ts"), rendered.render); _import = interfaceOrEnumeration.fileName; var refKey = "#/components/schemas/response/" + schemaName; reference.addReference(refKey, { fileName: interfaceOrEnumeration.fileName, className: className, folderPath: folder.getInterfaceResponseFolder() }); var importAndType = reference.getImportAndTypeByRef(refKey, folder.getServiceFolder()); responseType = importAndType.className; importAndType.className; _import = importAndType.import; } } } return { responseClass: responseType, isJsonResponse: isJson, isPlaintextResponse: isPlaintext, isDownloadResponse: isDownload, import: _import, }; } else { return { isJsonResponse: false, isPlaintextResponse: false, isDownloadResponse: false, }; } }; //# sourceMappingURL=create-response-interfaces.js.map