mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-06-01 06:20:53 +00:00
Autoset constants (Required fields having single valid enum value) C# Implementation of #16547 (#17954)
* Autoset constants (Required fields having single valid enum value) C# Implementation * Update generichost/api.mustache & httpclient/api.mustache to autoset singleton enums values.
This commit is contained in:
parent
8dae7026b9
commit
31cff44206
@ -1102,6 +1102,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
operation.vendorExtensions.put("x-not-nullable-reference-types", referenceTypes);
|
operation.vendorExtensions.put("x-not-nullable-reference-types", referenceTypes);
|
||||||
operation.vendorExtensions.put("x-has-not-nullable-reference-types", referenceTypes.size() > 0);
|
operation.vendorExtensions.put("x-has-not-nullable-reference-types", referenceTypes.size() > 0);
|
||||||
processOperation(operation);
|
processOperation(operation);
|
||||||
|
|
||||||
|
// Remove constant params from allParams list and add to constantParams
|
||||||
|
handleConstantParams(operation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -573,6 +573,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
|
localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isPathParam}}
|
||||||
|
// Set client side default value of Path Param "{{baseName}}".
|
||||||
|
localVarRequestOptions.PathParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant path parameter
|
||||||
|
{{/isPathParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#pathParams}}
|
{{#pathParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
localVarRequestOptions.PathParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // path parameter
|
localVarRequestOptions.PathParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // path parameter
|
||||||
@ -584,6 +590,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
}
|
}
|
||||||
{{/required}}
|
{{/required}}
|
||||||
{{/pathParams}}
|
{{/pathParams}}
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isQueryParam}}
|
||||||
|
// Set client side default value of Query Param "{{baseName}}".
|
||||||
|
localVarRequestOptions.QueryParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant query parameter
|
||||||
|
{{/isQueryParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#queryParams}}
|
{{#queryParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
{{#isDeepObject}}
|
{{#isDeepObject}}
|
||||||
@ -618,6 +630,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
}
|
}
|
||||||
{{/required}}
|
{{/required}}
|
||||||
{{/queryParams}}
|
{{/queryParams}}
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isHeaderParam}}
|
||||||
|
// Set client side default value of Header Param "{{baseName}}".
|
||||||
|
localVarRequestOptions.HeaderParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant header parameter
|
||||||
|
{{/isHeaderParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#headerParams}}
|
{{#headerParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
localVarRequestOptions.HeaderParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // header parameter
|
localVarRequestOptions.HeaderParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // header parameter
|
||||||
|
@ -390,6 +390,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
uriBuilderLocalVar.Path = urlLocalVar.AbsolutePath;
|
uriBuilderLocalVar.Path = urlLocalVar.AbsolutePath;
|
||||||
{{/-first}}
|
{{/-first}}
|
||||||
{{/servers}}
|
{{/servers}}
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isPathParam}}
|
||||||
|
// Set client side default value of Path Param "{{baseName}}".
|
||||||
|
uriBuilderLocalVar.Path = uriBuilderLocalVar.Path.Replace("%7B{{baseName}}%7D", Uri.EscapeDataString(ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}}))); // Constant path parameter
|
||||||
|
{{/isPathParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#pathParams}}
|
{{#pathParams}}
|
||||||
uriBuilderLocalVar.Path = uriBuilderLocalVar.Path.Replace("%7B{{baseName}}%7D", Uri.EscapeDataString({{paramName}}.ToString()));
|
uriBuilderLocalVar.Path = uriBuilderLocalVar.Path.Replace("%7B{{baseName}}%7D", Uri.EscapeDataString({{paramName}}.ToString()));
|
||||||
{{#-last}}
|
{{#-last}}
|
||||||
@ -423,6 +429,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
{{/required}}
|
{{/required}}
|
||||||
{{/queryParams}}
|
{{/queryParams}}
|
||||||
|
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isQueryParam}}
|
||||||
|
// Set client side default value of Query Param "{{baseName}}".
|
||||||
|
parseQueryStringLocalVar["{{baseName}}"] = ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}}); // Constant query parameter
|
||||||
|
{{/isQueryParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#queryParams}}
|
{{#queryParams}}
|
||||||
{{^required}}
|
{{^required}}
|
||||||
if ({{paramName}}.IsSet)
|
if ({{paramName}}.IsSet)
|
||||||
@ -434,6 +446,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
|
|
||||||
{{/-last}}
|
{{/-last}}
|
||||||
{{/queryParams}}
|
{{/queryParams}}
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isHeaderParam}}
|
||||||
|
// Set client side default value of Header Param "{{baseName}}".
|
||||||
|
httpRequestMessageLocalVar.Headers.Add("{{baseName}}", ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant header parameter
|
||||||
|
{{/isHeaderParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#headerParams}}
|
{{#headerParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
httpRequestMessageLocalVar.Headers.Add("{{baseName}}", ClientUtils.ParameterToString({{paramName}}));
|
httpRequestMessageLocalVar.Headers.Add("{{baseName}}", ClientUtils.ParameterToString({{paramName}}));
|
||||||
|
@ -605,6 +605,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
var localVarAccept = {{packageName}}.Client.ClientUtils.SelectHeaderAccept(_accepts);
|
var localVarAccept = {{packageName}}.Client.ClientUtils.SelectHeaderAccept(_accepts);
|
||||||
if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
|
if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
|
||||||
|
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isPathParam}}
|
||||||
|
// Set client side default value of Path Param "{{baseName}}".
|
||||||
|
localVarRequestOptions.PathParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant path parameter
|
||||||
|
{{/isPathParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#pathParams}}
|
{{#pathParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
localVarRequestOptions.PathParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // path parameter
|
localVarRequestOptions.PathParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // path parameter
|
||||||
@ -616,6 +622,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
}
|
}
|
||||||
{{/required}}
|
{{/required}}
|
||||||
{{/pathParams}}
|
{{/pathParams}}
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isQueryParam}}
|
||||||
|
// Set client side default value of Query Param "{{baseName}}".
|
||||||
|
localVarRequestOptions.QueryParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant query parameter
|
||||||
|
{{/isQueryParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#queryParams}}
|
{{#queryParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("{{collectionFormat}}", "{{baseName}}", {{paramName}}));
|
localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("{{collectionFormat}}", "{{baseName}}", {{paramName}}));
|
||||||
@ -627,6 +639,12 @@ namespace {{packageName}}.{{apiPackage}}
|
|||||||
}
|
}
|
||||||
{{/required}}
|
{{/required}}
|
||||||
{{/queryParams}}
|
{{/queryParams}}
|
||||||
|
{{#constantParams}}
|
||||||
|
{{#isHeaderParam}}
|
||||||
|
// Set client side default value of Header Param "{{baseName}}".
|
||||||
|
localVarRequestOptions.HeaderParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{#_enum}}"{{{.}}}"{{/_enum}})); // Constant header parameter
|
||||||
|
{{/isHeaderParam}}
|
||||||
|
{{/constantParams}}
|
||||||
{{#headerParams}}
|
{{#headerParams}}
|
||||||
{{#required}}
|
{{#required}}
|
||||||
localVarRequestOptions.HeaderParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // header parameter
|
localVarRequestOptions.HeaderParameters.Add("{{baseName}}", {{packageName}}.Client.ClientUtils.ParameterToString({{paramName}})); // header parameter
|
||||||
|
@ -16,10 +16,26 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.csharpnetcore;
|
package org.openapitools.codegen.csharpnetcore;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.openapitools.codegen.TestUtils.assertFileContains;
|
||||||
|
import static org.openapitools.codegen.TestUtils.assertFileExists;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.openapitools.codegen.ClientOptInput;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
import org.openapitools.codegen.CodegenProperty;
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.DefaultGenerator;
|
||||||
import org.openapitools.codegen.TestUtils;
|
import org.openapitools.codegen.TestUtils;
|
||||||
import org.openapitools.codegen.languages.CSharpClientCodegen;
|
import org.openapitools.codegen.languages.CSharpClientCodegen;
|
||||||
import org.openapitools.codegen.languages.JavaClientCodegen;
|
import org.openapitools.codegen.languages.JavaClientCodegen;
|
||||||
@ -76,4 +92,29 @@ public class CSharpClientCodegenTest {
|
|||||||
Assert.assertFalse(property2.isFreeFormObject);
|
Assert.assertFalse(property2.isFreeFormObject);
|
||||||
Assert.assertFalse(property2.isAnyType);
|
Assert.assertFalse(property2.isAnyType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandleConstantParams() throws IOException {
|
||||||
|
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||||
|
output.deleteOnExit();
|
||||||
|
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/java/autoset_constant.yaml");
|
||||||
|
final DefaultGenerator defaultGenerator = new DefaultGenerator();
|
||||||
|
final ClientOptInput clientOptInput = new ClientOptInput();
|
||||||
|
clientOptInput.openAPI(openAPI);
|
||||||
|
CSharpClientCodegen cSharpClientCodegen = new CSharpClientCodegen();
|
||||||
|
cSharpClientCodegen.setOutputDir(output.getAbsolutePath());
|
||||||
|
cSharpClientCodegen.additionalProperties().put(CodegenConstants.AUTOSET_CONSTANTS, "true");
|
||||||
|
cSharpClientCodegen.setAutosetConstants(true);
|
||||||
|
clientOptInput.config(cSharpClientCodegen);
|
||||||
|
defaultGenerator.opts(clientOptInput);
|
||||||
|
|
||||||
|
Map<String, File> files = defaultGenerator.generate().stream()
|
||||||
|
.collect(Collectors.toMap(File::getPath, Function.identity()));
|
||||||
|
|
||||||
|
File apiFile = files
|
||||||
|
.get(Paths.get(output.getAbsolutePath(), "src", "Org.OpenAPITools", "Api", "HelloExampleApi.cs").toString());
|
||||||
|
assertNotNull(apiFile);
|
||||||
|
assertFileContains(apiFile.toPath(),
|
||||||
|
"localVarRequestOptions.HeaderParameters.Add(\"X-CUSTOM_CONSTANT_HEADER\", Org.OpenAPITools.Client.ClientUtils.ParameterToString(\"CONSTANT_VALUE\"));");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user