@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
JavaScript
"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