Skip to content

Commit 1e59aaf

Browse files
author
Per Kops
committed
fix: ensure proper generation of csharp client for default values on enums
1 parent 73360b2 commit 1e59aaf

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientParameterParametersFactory.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ private static void AppendParameters(
3737
{
3838
var useListForDataType = openApiParameter.Schema.IsTypeArray();
3939

40+
var parameterName = openApiParameter.Name.EnsureValidFormattedPropertyName();
41+
4042
var dataType = useListForDataType
4143
? openApiParameter.Schema.Items.GetDataType()
4244
: openApiParameter.Schema.GetDataType();
@@ -47,17 +49,27 @@ private static void AppendParameters(
4749

4850
if (parameters.FirstOrDefault(x => x.Name == openApiParameter.Name) is null)
4951
{
52+
var defaultValueInitializer = openApiParameter.Schema.GetDefaultValueAsString();
53+
54+
if (!string.IsNullOrEmpty(defaultValueInitializer) &&
55+
openApiParameter.ContainsEnumInSchemaOrProperties())
56+
{
57+
defaultValueInitializer = dataType.Equals(parameterName, StringComparison.Ordinal)
58+
? $"{ContentGeneratorConstants.Contracts}.{dataType}.{defaultValueInitializer.PascalCase(ApiOperationExtractor.ModelNameSeparators, removeSeparators: true)}"
59+
: $"{dataType}.{defaultValueInitializer.PascalCase(ApiOperationExtractor.ModelNameSeparators, removeSeparators: true)}";
60+
}
61+
5062
parameters.Add(new ContentGeneratorClientParameterParametersProperty(
5163
openApiParameter.Name,
52-
openApiParameter.Name.EnsureValidFormattedPropertyName(),
64+
parameterName,
5365
openApiParameter.ExtractDocumentationTags(),
5466
dataType,
5567
isSimpleType,
5668
useListForDataType,
5769
GetIsNullable(openApiParameter, useListForDataType),
5870
openApiParameter.Required,
5971
GetAdditionalValidationAttributes(openApiParameter),
60-
openApiParameter.Schema.GetDefaultValueAsString()));
72+
defaultValueInitializer));
6173
}
6274
}
6375
}
@@ -94,7 +106,7 @@ private static void AppendParametersFromBody(
94106
var requestBodyType = "string?";
95107
if (requestSchema.Reference is not null)
96108
{
97-
requestBodyType = requestSchema.Reference.Id.EnsureFirstCharacterToUpper();
109+
requestBodyType = requestSchema.Reference.Id.PascalCase(ApiOperationExtractor.ModelNameSeparators, removeSeparators: true);
98110
}
99111
else if (isFormatTypeOfBinary)
100112
{
@@ -106,7 +118,7 @@ private static void AppendParametersFromBody(
106118
}
107119
else if (requestSchema.Items is not null)
108120
{
109-
requestBodyType = requestSchema.Items.Reference.Id.EnsureFirstCharacterToUpper();
121+
requestBodyType = requestSchema.Items.Reference.Id.PascalCase(ApiOperationExtractor.ModelNameSeparators, removeSeparators: true);
110122
}
111123

112124
parameters.Add(new ContentGeneratorClientParameterParametersProperty(

0 commit comments

Comments
 (0)