From d807fb932d59d83e025915c78c4bcf20e1091429 Mon Sep 17 00:00:00 2001 From: Luca Vercelli Date: Fri, 24 Nov 2023 15:57:43 +0100 Subject: [PATCH] new attribute isJson issue #1173 --- .../codegen/v3/generators/DefaultCodegenConfig.java | 10 ++++++++++ .../handlebars/typescript-angular/api.service.mustache | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java index d3e5af8315..948f984ad4 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java +++ b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java @@ -2513,6 +2513,8 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) codegenParameter.dataType = codegenProperty.datatype; codegenParameter.dataFormat = codegenProperty.dataFormat; + setParameterJson(codegenParameter, parameterSchema); + if (getBooleanValue(codegenProperty, IS_ENUM_EXT_NAME)) { codegenParameter.datatypeWithEnum = codegenProperty.datatypeWithEnum; codegenParameter.enumName = codegenProperty.enumName; @@ -4403,6 +4405,14 @@ protected void setParameterNullable(CodegenParameter parameter, CodegenProperty parameter.nullable = property.nullable; } + protected void setParameterJson(CodegenParameter codegenParameter, Schema parameterSchema) { + String contentType = parameterSchema.getExtensions() == null ? null : (String) parameterSchema.getExtensions().get("x-content-type"); + if (contentType != null && contentType.startsWith("application/") && contentType.endsWith("json")) { + // application/json, application/problem+json, application/ld+json, some more? + codegenParameter.isJson = true; + } + } + @Override public boolean needsUnflattenedSpec() { return false; diff --git a/src/main/resources/handlebars/typescript-angular/api.service.mustache b/src/main/resources/handlebars/typescript-angular/api.service.mustache index 6976139da0..167ddf80fb 100644 --- a/src/main/resources/handlebars/typescript-angular/api.service.mustache +++ b/src/main/resources/handlebars/typescript-angular/api.service.mustache @@ -175,7 +175,12 @@ export class {{classname}} { {{#useHttpClient}}queryParameters = {{/useHttpClient}}queryParameters.set('{{baseName}}', {{paramName}}.toISOString()); {{/isDateTime}} {{^isDateTime}} + {{#isJson}} + {{#useHttpClient}}queryParameters = {{/useHttpClient}}queryParameters.set('{{baseName}}', JSON.stringify({{paramName}})); + {{/isJson}} + {{^isJson}} {{#useHttpClient}}queryParameters = {{/useHttpClient}}queryParameters.set('{{baseName}}', {{paramName}}); + {{/isJson}} {{/isDateTime}} } {{/isListContainer}}