Skip to content

Commit 76dbf20

Browse files
authored
Merge pull request #211 from atc-net/hotfix/client-generation
Hotfix/client generation
2 parents e36b618 + 242b90d commit 76dbf20

File tree

562 files changed

+21503
-4691
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

562 files changed

+21503
-4691
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(

src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiDocumentExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,15 +262,15 @@ public static bool IsUsingRequiredForSystemTextJsonSerializationAndSystemRuntime
262262

263263
foreach (var apiParameter in apiPathPair.Value.Parameters)
264264
{
265-
if (apiParameter.IsSchemaEnumAndUseJsonString())
265+
if (apiParameter.IsSchemaEnumAndUsesJsonString())
266266
{
267267
return true;
268268
}
269269
}
270270

271271
foreach (var apiParameter in apiOperationPair.Value.Parameters)
272272
{
273-
if (apiParameter.IsSchemaEnumAndUseJsonString())
273+
if (apiParameter.IsSchemaEnumAndUsesJsonString())
274274
{
275275
return true;
276276
}

src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiParameterExtensions.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ namespace Atc.Rest.ApiGenerator.OpenApi.Extensions;
22

33
public static class OpenApiParameterExtensions
44
{
5-
public static bool IsSchemaEnumAndUseJsonString(this OpenApiParameter apiParameter)
5+
public static bool IsSchemaEnumAndUsesJsonString(
6+
this OpenApiParameter apiParameter)
67
{
78
if (apiParameter.Schema.IsSchemaEnum())
89
{
@@ -24,6 +25,13 @@ public static bool IsSchemaEnumAndUseJsonString(this OpenApiParameter apiParamet
2425
return false;
2526
}
2627

28+
public static bool ContainsEnumInSchemaOrProperties(
29+
this OpenApiParameter apiParameter)
30+
=> apiParameter.Schema.IsSchemaEnumOrPropertyEnum() ||
31+
apiParameter.Schema.AllOf.Any(allOfSchema => allOfSchema.IsSchemaEnumOrPropertyEnum()) ||
32+
apiParameter.Schema.OneOf.Any(oneOfSchema => oneOfSchema.IsSchemaEnumOrPropertyEnum()) ||
33+
apiParameter.Schema.AnyOf.Any(anyOfSchema => anyOfSchema.IsSchemaEnumOrPropertyEnum());
34+
2735
public static CodeDocumentationTags ExtractDocumentationTags(
2836
this OpenApiParameter apiParameter)
2937
{

src/Atc.Rest.ApiGenerator.OpenApi/Extractors/ApiOperationExtractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Atc.Rest.ApiGenerator.OpenApi.Extractors;
55

66
public sealed class ApiOperationExtractor : IApiOperationExtractor
77
{
8-
public static readonly char[] ModelNameSeparators = { ' ', '-', '_', '.' };
8+
public static readonly char[] ModelNameSeparators = [' ', '-', '_', '.'];
99

1010
public IList<ApiOperation> Extract(
1111
OpenApiDocument apiDocument)

0 commit comments

Comments
 (0)