From 81269b867da9fed31037fd6fb2526f5c4940b83d Mon Sep 17 00:00:00 2001 From: Bradley Friedman Date: Thu, 19 Aug 2021 00:16:41 -0400 Subject: [PATCH] [cpp-ue4] fix for generating formParams in json requests (#10177) * fixed non-functional template which assumed a bodyParam requests and made no effort to construct json body from formParams. * changed spaces to tabs for new lines from last commit * fixed further indent and tab issues --- .../cpp-ue4/api-operations-source.mustache | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache index 30ed25d2658..2656a49f6f5 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache @@ -170,11 +170,28 @@ void {{classname}}::{{operationIdCamelCase}}Request::SetupHttpRequest(const FHtt HttpRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json; charset=utf-8")); HttpRequest->SetContentAsString(JsonBody); {{/bodyParams.0}} - {{#formParams.0}} + {{^bodyParams.0}} + // Form parameters + FString JsonBody; + JsonWriter Writer = TJsonWriterFactory<>::Create(&JsonBody); + Writer->WriteObjectStart(); {{#formParams}} - UE_LOG(Log{{unrealModuleName}}, Error, TEXT("Form parameter ({{baseName}}) was ignored, cannot be used in JsonBody")); + {{#required}} + Writer->WriteIdentifierPrefix(TEXT("{{baseName}}")); + WriteJsonValue(Writer, {{paramName}}); + {{/required}} + {{^required}} + if ({{paramName}}.IsSet()){ + Writer->WriteIdentifierPrefix(TEXT("{{baseName}}")); + WriteJsonValue(Writer, {{paramName}}.GetValue()); + } + {{/required}} {{/formParams}} - {{/formParams.0}} + Writer->WriteObjectEnd(); + Writer->Close(); + HttpRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json; charset=utf-8")); + HttpRequest->SetContentAsString(JsonBody); + {{/bodyParams.0}} } else if (Consumes.Contains(TEXT("multipart/form-data"))) {