From b1431c74a884f28e653f5924724f11c91cd52592 Mon Sep 17 00:00:00 2001 From: etherealjoy Date: Fri, 13 Sep 2019 16:12:23 +0200 Subject: [PATCH] Update after reviews --- .../languages/CppQt5AbstractCodegen.java | 41 ++++---- .../languages/CppQt5ClientCodegen.java | 12 +-- .../CppQt5QHttpEngineServerCodegen.java | 26 ++--- .../HttpFileElement.cpp.mustache | 98 ++++++++----------- .../cpp-qt5-client/HttpRequest.cpp.mustache | 7 +- .../cpp-qt5-client/api-body.mustache | 13 +-- .../HttpFileElement.cpp.mustache | 98 ++++++++----------- .../cpp-qt5/client/OAIHttpFileElement.cpp | 98 ++++++++----------- .../cpp-qt5/client/OAIHttpRequest.cpp | 7 +- .../petstore/cpp-qt5/client/OAIPetApi.cpp | 17 ++-- .../petstore/cpp-qt5/client/OAIStoreApi.cpp | 5 +- .../petstore/cpp-qt5/client/OAIUserApi.cpp | 12 ++- .../server/src/models/OAIHttpFileElement.cpp | 98 ++++++++----------- 13 files changed, 253 insertions(+), 279 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java index c4ce71224c82..ec03a45490f0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java @@ -26,7 +26,7 @@ public class CppQt5AbstractCodegen extends AbstractCppCodegen implements Codegen protected Set systemIncludes = new HashSet(); protected Set nonFrameworkPrimitives = new HashSet(); - + public CppQt5AbstractCodegen() { super(); // set modelNamePrefix as default for QHttpEngine Server @@ -61,10 +61,10 @@ public CppQt5AbstractCodegen() { "double") ); nonFrameworkPrimitives.addAll(languageSpecificPrimitives); - + foundationClasses.addAll( Arrays.asList( - "QString", + "QString", "QDate", "QDateTime", "QByteArray") @@ -78,7 +78,7 @@ public CppQt5AbstractCodegen() { typeMapping.put("integer", "qint32"); typeMapping.put("long", "qint64"); typeMapping.put("boolean", "bool"); - typeMapping.put("number", "double"); + typeMapping.put("number", "double"); typeMapping.put("array", "QList"); typeMapping.put("map", "QMap"); typeMapping.put("object", PREFIX + "Object"); @@ -90,7 +90,7 @@ public CppQt5AbstractCodegen() { // modifications on multiple templates) typeMapping.put("UUID", "QString"); typeMapping.put("URI", "QString"); - typeMapping.put("file", "QIODevice"); + typeMapping.put("file", "QByteArray"); typeMapping.put("binary", "QByteArray"); importMapping = new HashMap(); namespaces = new HashMap(); @@ -101,7 +101,6 @@ public CppQt5AbstractCodegen() { systemIncludes.add("QDate"); systemIncludes.add("QDateTime"); systemIncludes.add("QByteArray"); - systemIncludes.add("QIODevice"); } @Override public void processOpts() { @@ -119,7 +118,7 @@ public void processOpts() { additionalProperties().put("prefix", modelNamePrefix); } } - + @Override public String toModelImport(String name) { if( name.isEmpty() ) { @@ -140,7 +139,7 @@ public String toModelImport(String name) { return "#include \"" + folder + name + ".h\""; } - + /** * Optional - type declaration. This is a String which is used by the templates to instantiate your * types. There is typically special handling for different property types @@ -174,7 +173,7 @@ public String getTypeDeclaration(Schema p) { } @Override - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") public String toDefaultValue(Schema p) { if (ModelUtils.isBooleanSchema(p)) { return "false"; @@ -211,7 +210,7 @@ public String toDefaultValue(Schema p) { public String toModelFilename(String name) { return toModelName(name); } - + /** * Optional - OpenAPI type conversion. This is used to map OpenAPI types in a `Schema` into * either language specific types via `typeMapping` or into complex models if there is not a mapping. @@ -219,7 +218,7 @@ public String toModelFilename(String name) { * @return a string value of the type or complex model for this property */ @Override - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") public String getSchemaType(Schema p) { String openAPIType = super.getSchemaType(p); @@ -242,7 +241,7 @@ public String getSchemaType(Schema p) { public String toVarName(String name) { // sanitize name String varName = name; - varName = sanitizeName(name); + varName = sanitizeName(name); // if it's all uppper case, convert to lower case if (varName.matches("^[A-Z_]*$")) { @@ -270,7 +269,7 @@ public String toParamName(String name) { public String getTypeDeclaration(String str) { return str; } - + @Override protected boolean needToImport(String type) { return StringUtils.isNotBlank(type) && !defaultIncludes.contains(type) @@ -283,7 +282,7 @@ protected boolean needToImport(String type) { public Map postProcessOperationsWithModels(Map objs, List allModels) { Map objectMap = (Map) objs.get("operations"); List operations = (List) objectMap.get("operation"); - + List> imports = (List>) objs.get("imports"); Map codegenModels = new HashMap (); for(Object moObj : allModels) { @@ -298,7 +297,7 @@ public Map postProcessOperationsWithModels(Map o operation.vendorExtensions.put("returnsEnum", true); } } - // Check all return parameter baseType if there is a necessity to include, include it if not + // Check all return parameter baseType if there is a necessity to include, include it if not // already done if (operation.returnBaseType != null && needToImport(operation.returnBaseType)) { if(!isIncluded(operation.returnBaseType, imports)) { @@ -308,7 +307,7 @@ public Map postProcessOperationsWithModels(Map o List params = new ArrayList(); if (operation.allParams != null)params.addAll(operation.allParams); - // Check all parameter baseType if there is a necessity to include, include it if not + // Check all parameter baseType if there is a necessity to include, include it if not // already done for(CodegenParameter param : params) { if(param.isPrimitiveType && needToImport(param.baseType)) { @@ -321,7 +320,7 @@ public Map postProcessOperationsWithModels(Map o // We use QString to pass path params, add it to include if(!isIncluded("QString", imports)) { imports.add(createMapping("import", "QString")); - } + } } } if(isIncluded("QMap", imports)) { @@ -332,7 +331,7 @@ public Map postProcessOperationsWithModels(Map o } return objs; } - + @Override public Map postProcessModels(Map objs) { return postProcessModelsEnum(objs); @@ -342,18 +341,18 @@ public Map postProcessModels(Map objs) { public String toEnumValue(String value, String datatype) { return escapeText(value); } - + @Override public boolean isDataTypeString(String dataType) { return "QString".equals(dataType); } - + private Map createMapping(String key, String value) { Map customImport = new HashMap(); customImport.put(key, toModelImport(value)); return customImport; } - + private boolean isIncluded(String type, List> imports) { boolean included = false; String inclStr = toModelImport(type); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java index f8c2b2d03959..73897d8cf74d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java @@ -74,12 +74,12 @@ public CppQt5ClientCodegen() { addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, OPTIONAL_PROJECT_FILE_DESC, this.optionalProjectFileFlag); supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, PREFIX + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder, PREFIX + "Helpers.cpp")); - supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, PREFIX + "HttpRequest.h")); + supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, PREFIX + "HttpRequest.h")); supportingFiles.add(new SupportingFile("HttpRequest.cpp.mustache", sourceFolder, PREFIX + "HttpRequest.cpp")); supportingFiles.add(new SupportingFile("HttpFileElement.h.mustache", sourceFolder, PREFIX + "HttpFileElement.h")); - supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder, PREFIX + "HttpFileElement.cpp")); + supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder, PREFIX + "HttpFileElement.cpp")); supportingFiles.add(new SupportingFile("object.mustache", sourceFolder, PREFIX + "Object.h")); - supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder, PREFIX + "Enum.h")); + supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder, PREFIX + "Enum.h")); if (optionalProjectFileFlag) { supportingFiles.add(new SupportingFile("Project.mustache", sourceFolder, "client.pri")); } @@ -96,15 +96,15 @@ public void processOpts() { } else { additionalProperties.put(CodegenConstants.OPTIONAL_PROJECT_FILE, optionalProjectFileFlag); } - + if (additionalProperties.containsKey("modelNamePrefix")) { supportingFiles.clear(); supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, modelNamePrefix + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder, modelNamePrefix + "Helpers.cpp")); supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, modelNamePrefix + "HttpRequest.h")); - supportingFiles.add(new SupportingFile("HttpRequest.cpp.mustache", sourceFolder, modelNamePrefix + "HttpRequest.cpp")); + supportingFiles.add(new SupportingFile("HttpRequest.cpp.mustache", sourceFolder, modelNamePrefix + "HttpRequest.cpp")); supportingFiles.add(new SupportingFile("object.mustache", sourceFolder, modelNamePrefix + "Object.h")); - supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder, modelNamePrefix + "Enum.h")); + supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder, modelNamePrefix + "Enum.h")); typeMapping.put("file", modelNamePrefix + "HttpFileElement"); importMapping.put(modelNamePrefix + "HttpFileElement", "#include \"" + modelNamePrefix + "HttpFileElement.h\""); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java index 1b427f15eee0..a462164107d3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java @@ -76,7 +76,7 @@ public CppQt5QHttpEngineServerCodegen() { apiTemplateFiles.put( "apirequest.h.mustache", // the template to use ".h"); // the extension for each file to write - + apiTemplateFiles.put( "apirequest.cpp.mustache", // the template to use ".cpp"); // the extension for each file to write @@ -86,13 +86,13 @@ public CppQt5QHttpEngineServerCodegen() { * will use the resource stream to attempt to read the templates. */ embeddedTemplateDir = templateDir = "cpp-qt5-qhttpengine-server"; - + supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.cpp")); - supportingFiles.add(new SupportingFile("object.mustache", sourceFolder + MODEL_DIR, PREFIX + "Object.h")); + supportingFiles.add(new SupportingFile("object.mustache", sourceFolder + MODEL_DIR, PREFIX + "Object.h")); supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder + MODEL_DIR, PREFIX + "Enum.h")); supportingFiles.add(new SupportingFile("HttpFileElement.h.mustache", sourceFolder + MODEL_DIR, PREFIX + "HttpFileElement.h")); - supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder + MODEL_DIR, PREFIX + "HttpFileElement.cpp")); + supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder + MODEL_DIR, PREFIX + "HttpFileElement.cpp")); supportingFiles.add(new SupportingFile("apirouter.h.mustache", sourceFolder + APIHANDLER_DIR, PREFIX + "ApiRouter.h")); supportingFiles.add(new SupportingFile("apirouter.cpp.mustache", sourceFolder + APIHANDLER_DIR, PREFIX + "ApiRouter.cpp")); @@ -105,7 +105,7 @@ public CppQt5QHttpEngineServerCodegen() { supportingFiles.add(new SupportingFile("Dockerfile.mustache", sourceFolder, "Dockerfile")); supportingFiles.add(new SupportingFile("LICENSE.txt.mustache", sourceFolder, "LICENSE.txt")); typeMapping.put("file", PREFIX + "HttpFileElement"); - importMapping.put(PREFIX + "HttpFileElement", "#include \"" + PREFIX + "HttpFileElement.h\""); + importMapping.put(PREFIX + "HttpFileElement", "#include \"" + PREFIX + "HttpFileElement.h\""); } @@ -120,11 +120,11 @@ public void processOpts() { supportingFiles.add(new SupportingFile("object.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "Object.h")); supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "Enum.h")); supportingFiles.add(new SupportingFile("HttpFileElement.h.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "HttpFileElement.h")); - supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "HttpFileElement.cpp")); + supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "HttpFileElement.cpp")); supportingFiles.add(new SupportingFile("apirouter.h.mustache", sourceFolder + APIHANDLER_DIR, modelNamePrefix + "ApiRouter.h")); - supportingFiles.add(new SupportingFile("apirouter.cpp.mustache", sourceFolder + APIHANDLER_DIR, modelNamePrefix + "ApiRouter.cpp")); - - + supportingFiles.add(new SupportingFile("apirouter.cpp.mustache", sourceFolder + APIHANDLER_DIR, modelNamePrefix + "ApiRouter.cpp")); + + supportingFiles.add(new SupportingFile("main.cpp.mustache", sourceFolder + SRC_DIR, "main.cpp")); supportingFiles.add(new SupportingFile("src-CMakeLists.txt.mustache", sourceFolder + SRC_DIR, "CMakeLists.txt")); supportingFiles.add(new SupportingFile("README.md.mustache", sourceFolder, "README.MD")); @@ -133,7 +133,7 @@ public void processOpts() { supportingFiles.add(new SupportingFile("Dockerfile.mustache", sourceFolder, "Dockerfile")); supportingFiles.add(new SupportingFile("LICENSE.txt.mustache", sourceFolder, "LICENSE.txt")); typeMapping.put("file", modelNamePrefix + "HttpFileElement"); - importMapping.put(modelNamePrefix + "HttpFileElement", "#include \"" + modelNamePrefix + "HttpFileElement.h\""); + importMapping.put(modelNamePrefix + "HttpFileElement", "#include \"" + modelNamePrefix + "HttpFileElement.h\""); } } @@ -169,7 +169,7 @@ public String getName() { public String getHelp() { return "Generates a Qt5 C++ Server using the QHTTPEngine HTTP Library."; } - + /** * Location to write model files. You can use the modelPackage() as defined when the class is * instantiated @@ -191,7 +191,7 @@ public String apiFileFolder() { private String requestFileFolder() { return outputFolder + "/" + sourceFolder + APIREQUEST_DIR + "/" + apiPackage().replace("::", File.separator); } - + @Override public String apiFilename(String templateName, String tag) { String result = super.apiFilename(templateName, tag); @@ -202,7 +202,7 @@ public String apiFilename(String templateName, String tag) { } return result; } - + @Override public String toApiFilename(String name) { return modelNamePrefix + sanitizeName(camelize(name)) + "ApiHandler"; diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache index deb1de40eedf..bf4123b3f1e9 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache @@ -41,15 +41,14 @@ QString {{prefix}}HttpFileElement::asJson() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QString(bArray); } @@ -58,15 +57,14 @@ QJsonValue {{prefix}}HttpFileElement::asJsonValue() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QJsonDocument::fromBinaryData(bArray.data()).object(); } @@ -75,17 +73,14 @@ bool {{prefix}}HttpFileElement::fromStringValue(const QString &instr){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(instr.toUtf8()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(instr.toUtf8()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -94,17 +89,14 @@ bool {{prefix}}HttpFileElement::fromJsonValue(const QJsonValue &jval) { QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(QJsonDocument(jval.toObject()).toBinaryData()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(QJsonDocument(jval.toObject()).toBinaryData()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -113,16 +105,15 @@ QByteArray {{prefix}}HttpFileElement::asByteArray() const { QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } - } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } + if(!result) { + qDebug() << "Error opening file " << local_filename; + } return bArray; } @@ -130,17 +121,14 @@ bool {{prefix}}HttpFileElement::fromByteArray(const QByteArray& bytes){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(bytes); - file.close(); - result = true; + if(file.exists()){ + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(bytes); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache index 48275e59ecf4..58f2398dfebc 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache @@ -317,7 +317,12 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { } if (request_content.size() > 0 && !isFormData && (input->var_layout != MULTIPART)) { - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + if(!input->headers.contains("Content-Type")){ + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + } + else { + request.setHeader(QNetworkRequest::ContentTypeHeader, input->headers.value("Content-Type")); + } } else if (input->var_layout == URL_ENCODED) { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache index 5dfd72eebbcc..9b5d5973b1a7 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache @@ -110,18 +110,19 @@ void worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); {{prefix}}HttpRequestInput input(fullPath, "{{httpMethod}}"); - {{#formParams}} - {{^isFile}}input.add_var("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}}));{{/isFile}}{{#isFile}} - input.add_file("{{baseName}}", {{paramName}}.local_filename, {{paramName}}.request_filename, {{paramName}}.mime_type);{{/isFile}} - {{/formParams}}{{#bodyParams}} + {{#formParams}}{{^isFile}} + input.add_var("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}}));{{/isFile}}{{#isFile}} + input.add_file("{{baseName}}", {{paramName}}.local_filename, {{paramName}}.request_filename, {{paramName}}.mime_type);{{/isFile}}{{/formParams}} + {{#bodyParams}} {{#isContainer}}{{#isListContainer}} QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toArray());{{/isListContainer}}{{#isMapContainer}} QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toObject());{{/isMapContainer}} QByteArray bytes = doc.toJson(); input.request_body.append(bytes); {{/isContainer}}{{^isContainer}}{{#isString}} - QString output({{paramName}});{{/isString}}{{#isByteArray}}QString output({{paramName}});{{/isByteArray}}{{^isString}}{{^isByteArray}} - QString output = {{paramName}}.asJson();{{/isByteArray}}{{/isString}} + QString output({{paramName}});{{/isString}}{{#isByteArray}}QString output({{paramName}});{{/isByteArray}}{{^isString}}{{^isByteArray}}{{^isFile}} + QString output = {{paramName}}.asJson();{{/isFile}}{{/isByteArray}}{{/isString}}{{#isFile}}{{#hasConsumes}}input.headers.insert("Content-Type", {{#consumes}}{{^-first}}, {{/-first}}"{{mediaType}}"{{/consumes}});{{/hasConsumes}} + QByteArray output = {{paramName}}.asByteArray();{{/isFile}} input.request_body.append(output); {{/isContainer}}{{/bodyParams}} {{#headerParams}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.cpp.mustache index deb1de40eedf..bf4123b3f1e9 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.cpp.mustache @@ -41,15 +41,14 @@ QString {{prefix}}HttpFileElement::asJson() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QString(bArray); } @@ -58,15 +57,14 @@ QJsonValue {{prefix}}HttpFileElement::asJsonValue() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QJsonDocument::fromBinaryData(bArray.data()).object(); } @@ -75,17 +73,14 @@ bool {{prefix}}HttpFileElement::fromStringValue(const QString &instr){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(instr.toUtf8()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(instr.toUtf8()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -94,17 +89,14 @@ bool {{prefix}}HttpFileElement::fromJsonValue(const QJsonValue &jval) { QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(QJsonDocument(jval.toObject()).toBinaryData()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(QJsonDocument(jval.toObject()).toBinaryData()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -113,16 +105,15 @@ QByteArray {{prefix}}HttpFileElement::asByteArray() const { QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } - } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } + if(!result) { + qDebug() << "Error opening file " << local_filename; + } return bArray; } @@ -130,17 +121,14 @@ bool {{prefix}}HttpFileElement::fromByteArray(const QByteArray& bytes){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(bytes); - file.close(); - result = true; + if(file.exists()){ + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(bytes); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } diff --git a/samples/client/petstore/cpp-qt5/client/OAIHttpFileElement.cpp b/samples/client/petstore/cpp-qt5/client/OAIHttpFileElement.cpp index 17bcf4ccce42..020459131d84 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIHttpFileElement.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIHttpFileElement.cpp @@ -50,15 +50,14 @@ QString OAIHttpFileElement::asJson() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QString(bArray); } @@ -67,15 +66,14 @@ QJsonValue OAIHttpFileElement::asJsonValue() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QJsonDocument::fromBinaryData(bArray.data()).object(); } @@ -84,17 +82,14 @@ bool OAIHttpFileElement::fromStringValue(const QString &instr){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(instr.toUtf8()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(instr.toUtf8()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -103,17 +98,14 @@ bool OAIHttpFileElement::fromJsonValue(const QJsonValue &jval) { QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(QJsonDocument(jval.toObject()).toBinaryData()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(QJsonDocument(jval.toObject()).toBinaryData()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -122,16 +114,15 @@ QByteArray OAIHttpFileElement::asByteArray() const { QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } - } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } + if(!result) { + qDebug() << "Error opening file " << local_filename; + } return bArray; } @@ -139,17 +130,14 @@ bool OAIHttpFileElement::fromByteArray(const QByteArray& bytes){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(bytes); - file.close(); - result = true; + if(file.exists()){ + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(bytes); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } diff --git a/samples/client/petstore/cpp-qt5/client/OAIHttpRequest.cpp b/samples/client/petstore/cpp-qt5/client/OAIHttpRequest.cpp index e8e00492c27a..ef06abdf2899 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIHttpRequest.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIHttpRequest.cpp @@ -326,7 +326,12 @@ void OAIHttpRequestWorker::execute(OAIHttpRequestInput *input) { } if (request_content.size() > 0 && !isFormData && (input->var_layout != MULTIPART)) { - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + if(!input->headers.contains("Content-Type")){ + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + } + else { + request.setHeader(QNetworkRequest::ContentTypeHeader, input->headers.value("Content-Type")); + } } else if (input->var_layout == URL_ENCODED) { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); diff --git a/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp b/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp index 91358e32ee6f..8cb7352341d7 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp @@ -64,7 +64,7 @@ OAIPetApi::addPet(const OAIPet& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); - + QString output = body.asJson(); input.request_body.append(output); @@ -117,6 +117,7 @@ OAIPetApi::deletePet(const qint64& pet_id, const QString& api_key) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "DELETE"); + if (api_key != nullptr) { input.headers.insert("api_key", api_key); @@ -206,6 +207,7 @@ OAIPetApi::findPetsByStatus(const QList& status) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -302,6 +304,7 @@ OAIPetApi::findPetsByTags(const QList& tags) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -361,6 +364,7 @@ OAIPetApi::getPetById(const qint64& pet_id) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -408,7 +412,7 @@ OAIPetApi::updatePet(const OAIPet& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "PUT"); - + QString output = body.asJson(); input.request_body.append(output); @@ -461,9 +465,10 @@ OAIPetApi::updatePetWithForm(const qint64& pet_id, const QString& name, const QS worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); - input.add_var("name", ::OpenAPI::toStringValue(name)); - input.add_var("status", ::OpenAPI::toStringValue(status)); + input.add_var("name", ::OpenAPI::toStringValue(name)); + input.add_var("status", ::OpenAPI::toStringValue(status)); + foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); @@ -512,10 +517,10 @@ OAIPetApi::uploadFile(const qint64& pet_id, const QString& additional_metadata, worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); + input.add_var("additionalMetadata", ::OpenAPI::toStringValue(additional_metadata)); - input.add_file("file", file.local_filename, file.request_filename, file.mime_type); - + foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); diff --git a/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp b/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp index 3714c6ec48be..eaff088e585a 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp @@ -67,6 +67,7 @@ OAIStoreApi::deleteOrder(const QString& order_id) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "DELETE"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -113,6 +114,7 @@ OAIStoreApi::getInventory() { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -172,6 +174,7 @@ OAIStoreApi::getOrderById(const qint64& order_id) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -219,7 +222,7 @@ OAIStoreApi::placeOrder(const OAIOrder& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); - + QString output = body.asJson(); input.request_body.append(output); diff --git a/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp b/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp index c77f1fa09d90..05391dc93d35 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp @@ -64,7 +64,7 @@ OAIUserApi::createUser(const OAIUser& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); - + QString output = body.asJson(); input.request_body.append(output); @@ -114,7 +114,7 @@ OAIUserApi::createUsersWithArrayInput(const QList& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); - + QJsonDocument doc(::OpenAPI::toJsonValue(body).toArray()); QByteArray bytes = doc.toJson(); @@ -165,7 +165,7 @@ OAIUserApi::createUsersWithListInput(const QList& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "POST"); - + QJsonDocument doc(::OpenAPI::toJsonValue(body).toArray()); QByteArray bytes = doc.toJson(); @@ -219,6 +219,7 @@ OAIUserApi::deleteUser(const QString& username) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "DELETE"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -268,6 +269,7 @@ OAIUserApi::getUserByName(const QString& username) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -331,6 +333,7 @@ OAIUserApi::loginUser(const QString& username, const QString& password) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -379,6 +382,7 @@ OAIUserApi::logoutUser() { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "GET"); + foreach(QString key, this->defaultHeaders.keys()) { @@ -428,7 +432,7 @@ OAIUserApi::updateUser(const QString& username, const OAIUser& body) { worker->setTimeOut(timeout); worker->setWorkingDirectory(workingDirectory); OAIHttpRequestInput input(fullPath, "PUT"); - + QString output = body.asJson(); input.request_body.append(output); diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp b/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp index 17bcf4ccce42..020459131d84 100644 --- a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp +++ b/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp @@ -50,15 +50,14 @@ QString OAIHttpFileElement::asJson() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QString(bArray); } @@ -67,15 +66,14 @@ QJsonValue OAIHttpFileElement::asJsonValue() const{ QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + if(!result) { + qDebug() << "Error opening file " << local_filename; } return QJsonDocument::fromBinaryData(bArray.data()).object(); } @@ -84,17 +82,14 @@ bool OAIHttpFileElement::fromStringValue(const QString &instr){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(instr.toUtf8()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(instr.toUtf8()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -103,17 +98,14 @@ bool OAIHttpFileElement::fromJsonValue(const QJsonValue &jval) { QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(QJsonDocument(jval.toObject()).toBinaryData()); - file.close(); - result = true; + if(file.exists()) { + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(QJsonDocument(jval.toObject()).toBinaryData()); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; } @@ -122,16 +114,15 @@ QByteArray OAIHttpFileElement::asByteArray() const { QFile file(local_filename); QByteArray bArray; - try { - if(file.exists()){ - file.open(QIODevice::ReadOnly); - bArray = file.readAll(); - file.close(); - } - } - catch(const std::exception &ex) { - qDebug() << "Error opening file " << ex.what(); + bool result = false; + if(file.exists()) { + result = file.open(QIODevice::ReadOnly); + bArray = file.readAll(); + file.close(); } + if(!result) { + qDebug() << "Error opening file " << local_filename; + } return bArray; } @@ -139,17 +130,14 @@ bool OAIHttpFileElement::fromByteArray(const QByteArray& bytes){ QFile file(local_filename); bool result = false; - try { - if(file.exists()){ - file.remove(); - } - file.open(QIODevice::WriteOnly); - file.write(bytes); - file.close(); - result = true; + if(file.exists()){ + file.remove(); } - catch(const std::exception &ex) { - qDebug() << "Error creating file " << ex.what(); + result = file.open(QIODevice::WriteOnly); + file.write(bytes); + file.close(); + if(!result) { + qDebug() << "Error creating file " << local_filename; } return result; }