st-open-api
Version:
Generates API client SDKs from an OpenAPI specification written in OpenAPI version 3.x.x
70 lines • 3.27 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createResponseInterfaces = void 0;
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");
var createResponseInterfaces = function (operationId, responses) {
var reference = config_1.configuration.getReference();
var folder = config_1.configuration.getFolderManager();
var success = responses['200'] || responses['201'] || responses['207'];
// 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 = "".concat(operationId, "Response");
var className = 'I' + (0, formatText_1.formatText)(schemaName, 'ANY', 'PascalCase');
var interfaceOrEnumeration = (0, get_property_1.getInterfaceOrEnumFromSchema)(className, schemaName, responseSchema, folder.getInterfaceResponseFolder());
if (!!interfaceOrEnumeration) {
var rendered = interfaceOrEnumeration.render();
(0, fs_1.appendFileSync)((0, path_1.join)(folder.getInterfaceResponseFolder(), "".concat(rendered.fileName, ".ts")), rendered.render);
_import = interfaceOrEnumeration.fileName;
var refKey = "#/components/schemas/response/".concat(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,
};
}
};
exports.createResponseInterfaces = createResponseInterfaces;
//# sourceMappingURL=create-response-interfaces.js.map