Skip to content

Commit

Permalink
Run against NSwag v14 (requires to clone NSwag sources and checkout R…
Browse files Browse the repository at this point in the history
  • Loading branch information
bkoelman committed Jul 9, 2024
1 parent 6ddd7b8 commit f22d135
Show file tree
Hide file tree
Showing 12 changed files with 112 additions and 40 deletions.
1 change: 1 addition & 0 deletions nuget.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<configuration>
<packageSources>
<add key="Swashbuckle MyGet" value="https://www.myget.org/F/domaindrivendev/api/v3/index.json" />
<add key="NSwag MyGet" value="https://www.myget.org/F/nswag/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
2 changes: 1 addition & 1 deletion package-versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<InheritDocVersion>2.0.*</InheritDocVersion>
<KiotaVersion>1.*</KiotaVersion>
<MicrosoftApiClientVersion>8.0.*</MicrosoftApiClientVersion>
<NSwagApiClientVersion>13.20.*</NSwagApiClientVersion>
<NSwagApiClientVersion>14.0.8-preview-20240707-1915</NSwagApiClientVersion>
<NewtonsoftJsonVersion>13.0.*</NewtonsoftJsonVersion>
<SourceLinkVersion>8.0.*</SourceLinkVersion>
<SwashbuckleVersion>6.*-*</SwashbuckleVersion>
Expand Down
8 changes: 5 additions & 3 deletions src/Examples/OpenApiNSwagClientExample/ExampleApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ namespace OpenApiNSwagClientExample;
[UsedImplicitly(ImplicitUseTargetFlags.Itself)]
public partial class ExampleApiClient : JsonApiClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
partial void Initialize()
{
SetSerializerSettingsForJsonApi(settings);
_instanceSettings = new JsonSerializerSettings();

#if DEBUG
settings.Formatting = Formatting.Indented;
_instanceSettings.Formatting = Formatting.Indented;
#endif

SetSerializerSettingsForJsonApi(_instanceSettings);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@
<ClassName>ExampleApiClient</ClassName>
<OutputPath>ExampleApiClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Options>/GenerateExceptionClasses:false /WrapResponses:true /GenerateResponseClasses:false /ResponseClass:ApiResponse /GenerateNullableReferenceTypes:true /GenerateOptionalPropertiesAsNullable:true /GenerateOptionalParameters:true /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagWrapResponses>true</NSwagWrapResponses>
<NSwagGenerateResponseClasses>false</NSwagGenerateResponseClasses>
<NSwagResponseClass>ApiResponse</NSwagResponseClass>
<NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes>
<NSwagGenerateOptionalPropertiesAsNullable>true</NSwagGenerateOptionalPropertiesAsNullable>
<NSwagGenerateOptionalParameters>true</NSwagGenerateOptionalParameters>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
</OpenApiReference>
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,7 @@ private static void AddQueryStringParameters(OpenApiOperation operation, bool is
// The next best thing is to expose the query string parameters as unstructured and optional.
// - This makes SwaggerUI ask for JSON, which is a bit odd, but it works. For example: {"sort":"-id"} produces: ?sort=-id
// - This makes NSwag produce a C# client with method signature: GetAsync(IDictionary<string, string?>? query)
// when combined with <Options>/GenerateNullableReferenceTypes:true</Options> in the project file.
// when combined with <NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes> in the project file.

operation.Parameters.Add(new OpenApiParameter
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.LegacyOpenApi.GeneratedCode;

internal partial class LegacyClient : JsonApiClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
partial void Initialize()
{
SetSerializerSettingsForJsonApi(settings);
_instanceSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented
};

settings.Formatting = Formatting.Indented;
SetSerializerSettingsForJsonApi(_instanceSettings);
}
}
45 changes: 33 additions & 12 deletions test/OpenApiNSwagClientTests/OpenApiNSwagClientTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -28,56 +28,77 @@
<ClassName>LegacyClient</ClassName>
<OutputPath>LegacyClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Options>/GenerateClientInterfaces:true /ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
<NSwagGenerateClientInterfaces>true</NSwagGenerateClientInterfaces>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\NamingConventions\KebabCase\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.NamingConventions.KebabCase.GeneratedCode</Namespace>
<ClassName>KebabCaseClient</ClassName>
<OutputPath>KebabCaseClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\NamingConventions\CamelCase\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.NamingConventions.CamelCase.GeneratedCode</Namespace>
<ClassName>CamelCaseClient</ClassName>
<OutputPath>CamelCaseClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\NamingConventions\PascalCase\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.NamingConventions.PascalCase.GeneratedCode</Namespace>
<ClassName>PascalCaseClient</ClassName>
<OutputPath>PascalCaseClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOff\ModelStateValidationOff\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOff.GeneratedCode</Namespace>
<ClassName>NrtOffMsvOffClient</ClassName>
<OutputPath>NrtOffMsvOffClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOff.GeneratedCode</Namespace>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:false</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
<NSwagGenerateNullableReferenceTypes>false</NSwagGenerateNullableReferenceTypes>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOff\ModelStateValidationOn\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOn.GeneratedCode</Namespace>
<ClassName>NrtOffMsvOnClient</ClassName>
<OutputPath>NrtOffMsvOnClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOn.GeneratedCode</Namespace>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:false</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
<NSwagGenerateNullableReferenceTypes>false</NSwagGenerateNullableReferenceTypes>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOn\ModelStateValidationOff\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOff.GeneratedCode</Namespace>
<ClassName>NrtOnMsvOffClient</ClassName>
<OutputPath>NrtOnMsvOffClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOff.GeneratedCode</Namespace>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:true</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
<NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes>
</OpenApiReference>
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOn\ModelStateValidationOn\GeneratedSwagger\swagger.g.json">
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOn.GeneratedCode</Namespace>
<ClassName>NrtOnMsvOnClient</ClassName>
<OutputPath>NrtOnMsvOnClient.cs</OutputPath>
<CodeGenerator>NSwagCSharp</CodeGenerator>
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOn.GeneratedCode</Namespace>
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:true</Options>
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
<NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes>
</OpenApiReference>
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes

internal partial class NrtOffMsvOffClient : JsonApiClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
partial void Initialize()
{
SetSerializerSettingsForJsonApi(settings);
_instanceSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented
};

settings.Formatting = Formatting.Indented;
SetSerializerSettingsForJsonApi(_instanceSettings);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes

internal partial class NrtOffMsvOnClient : JsonApiClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
partial void Initialize()
{
SetSerializerSettingsForJsonApi(settings);
_instanceSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented
};

settings.Formatting = Formatting.Indented;
SetSerializerSettingsForJsonApi(_instanceSettings);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes

internal partial class NrtOnMsvOffClient : JsonApiClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
partial void Initialize()
{
SetSerializerSettingsForJsonApi(settings);
_instanceSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented
};

settings.Formatting = Formatting.Indented;
SetSerializerSettingsForJsonApi(_instanceSettings);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes

internal partial class NrtOnMsvOnClient : JsonApiClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
partial void Initialize()
{
SetSerializerSettingsForJsonApi(settings);
_instanceSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented
};

settings.Formatting = Formatting.Indented;
SetSerializerSettingsForJsonApi(_instanceSettings);
}
}
Loading

0 comments on commit f22d135

Please sign in to comment.