diff --git a/.github/workflows/pre-integration.yml b/.github/workflows/pre-integration.yml index 5b2ba46d4..faeab5f63 100644 --- a/.github/workflows/pre-integration.yml +++ b/.github/workflows/pre-integration.yml @@ -88,7 +88,7 @@ jobs: run: dotnet restore - name: 🛠️ Build with dotnet - run: dotnet build Atc.Rest.Api.Generator.sln + run: dotnet build Atc.Rest.Api.Generator.slnx - name: ⬇️🌎 Download Swagger Petstore v3 spec run: curl -O https://petstore3.swagger.io/api/v3/openapi.yaml diff --git a/Atc.Rest.Api.Generator.sln b/Atc.Rest.Api.Generator.sln deleted file mode 100644 index 1ce1b35db..000000000 --- a/Atc.Rest.Api.Generator.sln +++ /dev/null @@ -1,156 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{F39DCB66-0A9F-47BA-A916-301EC83F26EA}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Src", "Src", "{A4F3156B-9E74-4710-ADBC-4628DF389F68}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator", "src\Atc.Rest.ApiGenerator\Atc.Rest.ApiGenerator.csproj", "{91EBC1B7-0F17-4E4E-96AF-A9D5445344AB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{1575FE97-3F0C-4E58-963E-30B06A03133F}" - ProjectSection(SolutionItems) = preProject - README.md = README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.CLI", "src\Atc.Rest.ApiGenerator.CLI\Atc.Rest.ApiGenerator.CLI.csproj", "{0F69048E-9C05-4BE1-9C73-F703B8ACC8C4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Framework.Mvc", "src\Atc.Rest.ApiGenerator.Framework.Mvc\Atc.Rest.ApiGenerator.Framework.Mvc.csproj", "{5416CB30-1728-43C9-A7DE-D3463E35866D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Framework.Minimal", "src\Atc.Rest.ApiGenerator.Framework.Minimal\Atc.Rest.ApiGenerator.Framework.Minimal.csproj", "{E0B64023-B487-4B0E-9A2B-B9E28D1E7964}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Framework", "src\Atc.Rest.ApiGenerator.Framework\Atc.Rest.ApiGenerator.Framework.csproj", "{2D69D9AA-19E2-469D-BCA4-ED972721E005}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Framework.Mvc.Tests", "test\Atc.Rest.ApiGenerator.Framework.Mvc.Tests\Atc.Rest.ApiGenerator.Framework.Mvc.Tests.csproj", "{108216D7-4552-4397-AC5A-5C3346D65BFB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Contracts", "src\Atc.Rest.ApiGenerator.Contracts\Atc.Rest.ApiGenerator.Contracts.csproj", "{DEA4D5EC-DD8A-48D6-B859-55D95F46CC06}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.OpenApi", "src\Atc.Rest.ApiGenerator.OpenApi\Atc.Rest.ApiGenerator.OpenApi.csproj", "{EE12FAB6-FEA2-4819-ABAF-B38319325F35}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.OpenApi.Tests", "test\Atc.Rest.ApiGenerator.OpenApi.Tests\Atc.Rest.ApiGenerator.OpenApi.Tests.csproj", "{4562D01B-E184-489C-904B-C9E39BA17E6E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Framework.Tests", "test\Atc.Rest.ApiGenerator.Framework.Tests\Atc.Rest.ApiGenerator.Framework.Tests.csproj", "{B8194FFD-8C4D-46AA-B1FA-A3EE195AF0FD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.CodeGeneration.CSharp", "src\Atc.CodeGeneration.CSharp\Atc.CodeGeneration.CSharp.csproj", "{9A87BAA2-F521-45B1-AF93-9BC642FD8C76}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.CodeGeneration.CSharp.Tests", "test\Atc.CodeGeneration.CSharp.Tests\Atc.CodeGeneration.CSharp.Tests.csproj", "{F8F86538-AFA4-4CD9-9DF7-C870F85F4608}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Nuget", "src\Atc.Rest.ApiGenerator.Nuget\Atc.Rest.ApiGenerator.Nuget.csproj", "{8670E175-EB04-4FDC-9D04-8FB0839CCF49}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.CodingRules", "src\Atc.Rest.ApiGenerator.CodingRules\Atc.Rest.ApiGenerator.CodingRules.csproj", "{6DE044E7-2804-48AD-8EF1-EC804A2C0395}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Nuget.Tests", "test\Atc.Rest.ApiGenerator.Nuget.Tests\Atc.Rest.ApiGenerator.Nuget.Tests.csproj", "{3F33D1B3-7AD9-44A3-B5F4-048BED3913C8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Contracts.Tests", "test\Atc.Rest.ApiGenerator.Contracts.Tests\Atc.Rest.ApiGenerator.Contracts.Tests.csproj", "{8FF7EF9D-DDBB-4D25-B3A5-5E0D11462545}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.CLI.Tests", "test\Atc.Rest.ApiGenerator.CLI.Tests\Atc.Rest.ApiGenerator.CLI.Tests.csproj", "{D75819AA-3092-43F6-80D2-1BF2FCAA92EE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Rest.ApiGenerator.Client.CSharp", "src\Atc.Rest.ApiGenerator.Client.CSharp\Atc.Rest.ApiGenerator.Client.CSharp.csproj", "{6BACA326-54B0-4832-B16E-1419083EECFD}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {91EBC1B7-0F17-4E4E-96AF-A9D5445344AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91EBC1B7-0F17-4E4E-96AF-A9D5445344AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91EBC1B7-0F17-4E4E-96AF-A9D5445344AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91EBC1B7-0F17-4E4E-96AF-A9D5445344AB}.Release|Any CPU.Build.0 = Release|Any CPU - {0F69048E-9C05-4BE1-9C73-F703B8ACC8C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F69048E-9C05-4BE1-9C73-F703B8ACC8C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F69048E-9C05-4BE1-9C73-F703B8ACC8C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F69048E-9C05-4BE1-9C73-F703B8ACC8C4}.Release|Any CPU.Build.0 = Release|Any CPU - {5416CB30-1728-43C9-A7DE-D3463E35866D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5416CB30-1728-43C9-A7DE-D3463E35866D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5416CB30-1728-43C9-A7DE-D3463E35866D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5416CB30-1728-43C9-A7DE-D3463E35866D}.Release|Any CPU.Build.0 = Release|Any CPU - {E0B64023-B487-4B0E-9A2B-B9E28D1E7964}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E0B64023-B487-4B0E-9A2B-B9E28D1E7964}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E0B64023-B487-4B0E-9A2B-B9E28D1E7964}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E0B64023-B487-4B0E-9A2B-B9E28D1E7964}.Release|Any CPU.Build.0 = Release|Any CPU - {2D69D9AA-19E2-469D-BCA4-ED972721E005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2D69D9AA-19E2-469D-BCA4-ED972721E005}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2D69D9AA-19E2-469D-BCA4-ED972721E005}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2D69D9AA-19E2-469D-BCA4-ED972721E005}.Release|Any CPU.Build.0 = Release|Any CPU - {108216D7-4552-4397-AC5A-5C3346D65BFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {108216D7-4552-4397-AC5A-5C3346D65BFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {108216D7-4552-4397-AC5A-5C3346D65BFB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {108216D7-4552-4397-AC5A-5C3346D65BFB}.Release|Any CPU.Build.0 = Release|Any CPU - {DEA4D5EC-DD8A-48D6-B859-55D95F46CC06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DEA4D5EC-DD8A-48D6-B859-55D95F46CC06}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DEA4D5EC-DD8A-48D6-B859-55D95F46CC06}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DEA4D5EC-DD8A-48D6-B859-55D95F46CC06}.Release|Any CPU.Build.0 = Release|Any CPU - {EE12FAB6-FEA2-4819-ABAF-B38319325F35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EE12FAB6-FEA2-4819-ABAF-B38319325F35}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EE12FAB6-FEA2-4819-ABAF-B38319325F35}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EE12FAB6-FEA2-4819-ABAF-B38319325F35}.Release|Any CPU.Build.0 = Release|Any CPU - {4562D01B-E184-489C-904B-C9E39BA17E6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4562D01B-E184-489C-904B-C9E39BA17E6E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4562D01B-E184-489C-904B-C9E39BA17E6E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4562D01B-E184-489C-904B-C9E39BA17E6E}.Release|Any CPU.Build.0 = Release|Any CPU - {B8194FFD-8C4D-46AA-B1FA-A3EE195AF0FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B8194FFD-8C4D-46AA-B1FA-A3EE195AF0FD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B8194FFD-8C4D-46AA-B1FA-A3EE195AF0FD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B8194FFD-8C4D-46AA-B1FA-A3EE195AF0FD}.Release|Any CPU.Build.0 = Release|Any CPU - {9A87BAA2-F521-45B1-AF93-9BC642FD8C76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9A87BAA2-F521-45B1-AF93-9BC642FD8C76}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A87BAA2-F521-45B1-AF93-9BC642FD8C76}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9A87BAA2-F521-45B1-AF93-9BC642FD8C76}.Release|Any CPU.Build.0 = Release|Any CPU - {F8F86538-AFA4-4CD9-9DF7-C870F85F4608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F8F86538-AFA4-4CD9-9DF7-C870F85F4608}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F8F86538-AFA4-4CD9-9DF7-C870F85F4608}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F8F86538-AFA4-4CD9-9DF7-C870F85F4608}.Release|Any CPU.Build.0 = Release|Any CPU - {8670E175-EB04-4FDC-9D04-8FB0839CCF49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8670E175-EB04-4FDC-9D04-8FB0839CCF49}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8670E175-EB04-4FDC-9D04-8FB0839CCF49}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8670E175-EB04-4FDC-9D04-8FB0839CCF49}.Release|Any CPU.Build.0 = Release|Any CPU - {6DE044E7-2804-48AD-8EF1-EC804A2C0395}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6DE044E7-2804-48AD-8EF1-EC804A2C0395}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6DE044E7-2804-48AD-8EF1-EC804A2C0395}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6DE044E7-2804-48AD-8EF1-EC804A2C0395}.Release|Any CPU.Build.0 = Release|Any CPU - {3F33D1B3-7AD9-44A3-B5F4-048BED3913C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3F33D1B3-7AD9-44A3-B5F4-048BED3913C8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3F33D1B3-7AD9-44A3-B5F4-048BED3913C8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3F33D1B3-7AD9-44A3-B5F4-048BED3913C8}.Release|Any CPU.Build.0 = Release|Any CPU - {8FF7EF9D-DDBB-4D25-B3A5-5E0D11462545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8FF7EF9D-DDBB-4D25-B3A5-5E0D11462545}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8FF7EF9D-DDBB-4D25-B3A5-5E0D11462545}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8FF7EF9D-DDBB-4D25-B3A5-5E0D11462545}.Release|Any CPU.Build.0 = Release|Any CPU - {D75819AA-3092-43F6-80D2-1BF2FCAA92EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D75819AA-3092-43F6-80D2-1BF2FCAA92EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D75819AA-3092-43F6-80D2-1BF2FCAA92EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D75819AA-3092-43F6-80D2-1BF2FCAA92EE}.Release|Any CPU.Build.0 = Release|Any CPU - {6BACA326-54B0-4832-B16E-1419083EECFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6BACA326-54B0-4832-B16E-1419083EECFD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6BACA326-54B0-4832-B16E-1419083EECFD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6BACA326-54B0-4832-B16E-1419083EECFD}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {91EBC1B7-0F17-4E4E-96AF-A9D5445344AB} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {0F69048E-9C05-4BE1-9C73-F703B8ACC8C4} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {5416CB30-1728-43C9-A7DE-D3463E35866D} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {E0B64023-B487-4B0E-9A2B-B9E28D1E7964} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {2D69D9AA-19E2-469D-BCA4-ED972721E005} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {108216D7-4552-4397-AC5A-5C3346D65BFB} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {DEA4D5EC-DD8A-48D6-B859-55D95F46CC06} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {EE12FAB6-FEA2-4819-ABAF-B38319325F35} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {4562D01B-E184-489C-904B-C9E39BA17E6E} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {B8194FFD-8C4D-46AA-B1FA-A3EE195AF0FD} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {9A87BAA2-F521-45B1-AF93-9BC642FD8C76} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {F8F86538-AFA4-4CD9-9DF7-C870F85F4608} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {8670E175-EB04-4FDC-9D04-8FB0839CCF49} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {6DE044E7-2804-48AD-8EF1-EC804A2C0395} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - {3F33D1B3-7AD9-44A3-B5F4-048BED3913C8} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {8FF7EF9D-DDBB-4D25-B3A5-5E0D11462545} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {D75819AA-3092-43F6-80D2-1BF2FCAA92EE} = {F39DCB66-0A9F-47BA-A916-301EC83F26EA} - {6BACA326-54B0-4832-B16E-1419083EECFD} = {A4F3156B-9E74-4710-ADBC-4628DF389F68} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {DFD408B5-CCB3-4B3A-9E3B-DC85C74256B1} - EndGlobalSection -EndGlobal diff --git a/Atc.Rest.Api.Generator.slnx b/Atc.Rest.Api.Generator.slnx new file mode 100644 index 000000000..2c5574ccd --- /dev/null +++ b/Atc.Rest.Api.Generator.slnx @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Directory.Build.props b/Directory.Build.props index bc2b6719a..d40337d19 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -43,10 +43,10 @@ - + - + \ No newline at end of file diff --git a/src/Atc.CodeGeneration.CSharp/Atc.CodeGeneration.CSharp.csproj b/src/Atc.CodeGeneration.CSharp/Atc.CodeGeneration.CSharp.csproj index f6aa95c89..ba67ba528 100644 --- a/src/Atc.CodeGeneration.CSharp/Atc.CodeGeneration.CSharp.csproj +++ b/src/Atc.CodeGeneration.CSharp/Atc.CodeGeneration.CSharp.csproj @@ -6,13 +6,9 @@ - - - - - - - + + + \ No newline at end of file diff --git a/src/Atc.Rest.ApiGenerator.CLI/ApiOptionsHelper.cs b/src/Atc.Rest.ApiGenerator.CLI/ApiOptionsHelper.cs index add9498f8..f41936271 100644 --- a/src/Atc.Rest.ApiGenerator.CLI/ApiOptionsHelper.cs +++ b/src/Atc.Rest.ApiGenerator.CLI/ApiOptionsHelper.cs @@ -43,7 +43,7 @@ public static async Task CreateDefault( return new ApiOptions(); } - var options = await FileHelper.ReadJsonFileAndDeserializeAsync(fileInfo); + var options = await FileHelper.ReadJsonFileToModelAsync(fileInfo); return options ?? new ApiOptions(); } @@ -57,7 +57,7 @@ public static async Task CreateDefault( var fileInfo = GetOptionsFile(optionsPath); if (fileInfo.Exists) { - options = await FileHelper.ReadJsonFileAndDeserializeAsync(fileInfo) ?? new ApiOptions(); + options = await FileHelper.ReadJsonFileToModelAsync(fileInfo) ?? new ApiOptions(); } await FileHelper.WriteModelToJsonFileAsync(fileInfo, options); @@ -77,7 +77,7 @@ public static async Task CreateDefault( try { - var options = await FileHelper.ReadJsonFileAndDeserializeAsync(fileInfo); + var options = await FileHelper.ReadJsonFileToModelAsync(fileInfo); return options is null ? (false, "File is invalid") : (true, string.Empty); diff --git a/src/Atc.Rest.ApiGenerator.CLI/Atc.Rest.ApiGenerator.CLI.csproj b/src/Atc.Rest.ApiGenerator.CLI/Atc.Rest.ApiGenerator.CLI.csproj index b7721d64a..b703ea2e7 100644 --- a/src/Atc.Rest.ApiGenerator.CLI/Atc.Rest.ApiGenerator.CLI.csproj +++ b/src/Atc.Rest.ApiGenerator.CLI/Atc.Rest.ApiGenerator.CLI.csproj @@ -13,9 +13,9 @@ - - - + + + diff --git a/src/Atc.Rest.ApiGenerator.Client.CSharp/Atc.Rest.ApiGenerator.Client.CSharp.csproj b/src/Atc.Rest.ApiGenerator.Client.CSharp/Atc.Rest.ApiGenerator.Client.CSharp.csproj index d9e992bc6..5d1f2b165 100644 --- a/src/Atc.Rest.ApiGenerator.Client.CSharp/Atc.Rest.ApiGenerator.Client.CSharp.csproj +++ b/src/Atc.Rest.ApiGenerator.Client.CSharp/Atc.Rest.ApiGenerator.Client.CSharp.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/src/Atc.Rest.ApiGenerator.CodingRules/Atc.Rest.ApiGenerator.CodingRules.csproj b/src/Atc.Rest.ApiGenerator.CodingRules/Atc.Rest.ApiGenerator.CodingRules.csproj index 876d3617f..0b1a6916b 100644 --- a/src/Atc.Rest.ApiGenerator.CodingRules/Atc.Rest.ApiGenerator.CodingRules.csproj +++ b/src/Atc.Rest.ApiGenerator.CodingRules/Atc.Rest.ApiGenerator.CodingRules.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/src/Atc.Rest.ApiGenerator.Contracts/Atc.Rest.ApiGenerator.Contracts.csproj b/src/Atc.Rest.ApiGenerator.Contracts/Atc.Rest.ApiGenerator.Contracts.csproj index 087c299a7..d2d5ddf84 100644 --- a/src/Atc.Rest.ApiGenerator.Contracts/Atc.Rest.ApiGenerator.Contracts.csproj +++ b/src/Atc.Rest.ApiGenerator.Contracts/Atc.Rest.ApiGenerator.Contracts.csproj @@ -6,16 +6,12 @@ - - + + - - - - diff --git a/src/Atc.Rest.ApiGenerator.Framework.Minimal/Atc.Rest.ApiGenerator.Framework.Minimal.csproj b/src/Atc.Rest.ApiGenerator.Framework.Minimal/Atc.Rest.ApiGenerator.Framework.Minimal.csproj index 9a4d605fe..9a72b2b78 100644 --- a/src/Atc.Rest.ApiGenerator.Framework.Minimal/Atc.Rest.ApiGenerator.Framework.Minimal.csproj +++ b/src/Atc.Rest.ApiGenerator.Framework.Minimal/Atc.Rest.ApiGenerator.Framework.Minimal.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Atc.Rest.ApiGenerator.Framework.Mvc/Atc.Rest.ApiGenerator.Framework.Mvc.csproj b/src/Atc.Rest.ApiGenerator.Framework.Mvc/Atc.Rest.ApiGenerator.Framework.Mvc.csproj index 250fd9ffc..758107b40 100644 --- a/src/Atc.Rest.ApiGenerator.Framework.Mvc/Atc.Rest.ApiGenerator.Framework.Mvc.csproj +++ b/src/Atc.Rest.ApiGenerator.Framework.Mvc/Atc.Rest.ApiGenerator.Framework.Mvc.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/src/Atc.Rest.ApiGenerator.Framework/Atc.Rest.ApiGenerator.Framework.csproj b/src/Atc.Rest.ApiGenerator.Framework/Atc.Rest.ApiGenerator.Framework.csproj index 4330b8f8e..317dddef0 100644 --- a/src/Atc.Rest.ApiGenerator.Framework/Atc.Rest.ApiGenerator.Framework.csproj +++ b/src/Atc.Rest.ApiGenerator.Framework/Atc.Rest.ApiGenerator.Framework.csproj @@ -26,10 +26,10 @@ - - - - + + + + diff --git a/src/Atc.Rest.ApiGenerator.Framework/ContentGenerators/Server/ContentGeneratorServerConfigureSwaggerDocOptions.cs b/src/Atc.Rest.ApiGenerator.Framework/ContentGenerators/Server/ContentGeneratorServerConfigureSwaggerDocOptions.cs index 141d8d523..7930b5221 100644 --- a/src/Atc.Rest.ApiGenerator.Framework/ContentGenerators/Server/ContentGeneratorServerConfigureSwaggerDocOptions.cs +++ b/src/Atc.Rest.ApiGenerator.Framework/ContentGenerators/Server/ContentGeneratorServerConfigureSwaggerDocOptions.cs @@ -21,7 +21,7 @@ public string Generate() var sb = new StringBuilder(); sb.Append(codeHeaderGenerator.Generate()); - sb.AppendLine($"namespace {parameters.Namespace}.Options;"); // TODO: Move to constant + sb.AppendLine($"namespace {parameters.Namespace}.Options;"); sb.AppendLine(); sb.AppendLine(codeAttributeGenerator.Generate()); sb.AppendLine("public class ConfigureSwaggerDocOptions : IConfigureOptions"); @@ -58,114 +58,205 @@ public string Generate() sb.AppendLine(8, "ApiVersionDescription description)"); sb.AppendLine(4, "{"); - var description = string.Empty; - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.Description)) + var opts = parameters.SwaggerDocOptions; + var descriptionText = string.Empty; + if (!string.IsNullOrWhiteSpace(opts.Description)) { - description = parameters.SwaggerDocOptions.Description! + descriptionText = opts.Description! .Replace("\"", string.Empty, StringComparison.Ordinal) .Replace("'", string.Empty, StringComparison.Ordinal) .Trim(); } - sb.AppendLine(8, $"var text = new StringBuilder(@\"{description}\");"); - sb.AppendLine(8, "var info = new OpenApiInfo"); - sb.AppendLine(8, "{"); - sb.AppendLine(12, "Title = $\"{environment.ApplicationName} {description.GroupName.ToUpperInvariant()}\","); - sb.AppendLine(12, "Version = description.ApiVersion.ToString(),"); - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.ContactName) || - !string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.ContactEmail) || - !string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.ContactUrl)) - { - sb.AppendLine(12, "Contact = new OpenApiContact"); - sb.AppendLine(12, "{"); - - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.ContactName)) - { - sb.AppendLine(16, $"Name = \"{parameters.SwaggerDocOptions.ContactName}\","); - } + AppendStringBuilderInit(sb, 8, descriptionText); + AppendApiInfo(sb, 8, opts); + AppendSunsetPolicyBlock(sb, 8); - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.ContactEmail)) - { - sb.AppendLine(16, $"Email = \"{parameters.SwaggerDocOptions.ContactEmail}\","); - } - - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.ContactUrl)) - { - sb.AppendLine(16, $"Url = new Uri(\"{parameters.SwaggerDocOptions.ContactUrl}\"),"); - } + sb.AppendLine(8, "info.Description = text.ToString();"); + sb.AppendLine(); + sb.AppendLine(8, "return info;"); + sb.AppendLine(4, "}"); + sb.Append('}'); - sb.AppendLine(12, "},"); - } + return sb.ToString(); + } - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.TermsOfService)) - { - sb.AppendLine(12, $"TermsOfService = new Uri(\"{parameters.SwaggerDocOptions.TermsOfService}\"),"); - } + private static void AppendApiInfo( + StringBuilder sb, + int baseIndent, + SwaggerDocOptionsParameters opts) + { + var indent = baseIndent + 4; - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.LicenseName) || - !string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.LicenseUrl)) - { - sb.AppendLine(12, "License = new OpenApiLicense"); - sb.AppendLine(12, "{"); + sb.AppendLine(baseIndent, "var info = new OpenApiInfo"); + sb.AppendLine(baseIndent, "{"); + sb.AppendLine(indent, "Title = $\"{environment.ApplicationName} {description.GroupName.ToUpperInvariant()}\","); + sb.AppendLine(indent, "Version = description.ApiVersion.ToString(),"); - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.LicenseName)) - { - sb.AppendLine(16, $"Name = \"{parameters.SwaggerDocOptions.LicenseName}\","); - } + AppendContact(sb, indent, opts.ContactName, opts.ContactEmail, opts.ContactUrl); + AppendTermsOfService(sb, indent, opts.TermsOfService); + AppendLicense(sb, indent, opts.LicenseName, opts.LicenseUrl); - if (!string.IsNullOrWhiteSpace(parameters.SwaggerDocOptions.LicenseUrl)) - { - sb.AppendLine(16, $"Url = new Uri(\"{parameters.SwaggerDocOptions.LicenseUrl}\"),"); - } + sb.AppendLine(baseIndent, "};"); + sb.AppendLine(); + } - sb.AppendLine(12, "},"); - } + private static void AppendSunsetPolicyBlock( + StringBuilder sb, + int baseIndent) + { + var i1 = baseIndent + 4; + var i2 = i1 + 4; + var i3 = i2 + 4; + var i4 = i3 + 4; - sb.AppendLine(8, "};"); + sb.AppendLine(baseIndent, "if (description.IsDeprecated)"); + sb.AppendLine(baseIndent, "{"); + sb.AppendLine(i1, "text.Append(\" This API version has been deprecated.\");"); + sb.AppendLine(baseIndent, "}"); sb.AppendLine(); - sb.AppendLine(8, "if (description.IsDeprecated)"); - sb.AppendLine(8, "{"); - sb.AppendLine(12, "text.Append(\" This API version has been deprecated.\");"); - sb.AppendLine(8, "}"); - sb.AppendLine(); - sb.AppendLine(8, "if (description.SunsetPolicy is { } policy)"); - sb.AppendLine(8, "{"); - sb.AppendLine(12, "if (policy.Date is { } when)"); - sb.AppendLine(12, "{"); - sb.AppendLine(16, "text.Append(\" The API will be sunset on \")"); - sb.AppendLine(20, ".Append(when.Date.ToShortDateString())"); - sb.AppendLine(20, ".Append('.');"); - sb.AppendLine(12, "}"); + sb.AppendLine(baseIndent, "if (description.SunsetPolicy is { } policy)"); + sb.AppendLine(baseIndent, "{"); + sb.AppendLine(i1, "if (policy.Date is { } when)"); + sb.AppendLine(i1, "{"); + sb.AppendLine(i2, "text.Append(\" The API will be sunset on \")"); + sb.AppendLine(i3, ".Append(when.Date.ToShortDateString())"); + sb.AppendLine(i3, ".Append('.');"); + sb.AppendLine(i1, "}"); sb.AppendLine(); - sb.AppendLine(12, "if (policy.HasLinks)"); - sb.AppendLine(12, "{"); - sb.AppendLine(16, "text.AppendLine();"); + sb.AppendLine(i1, "if (policy.HasLinks)"); + sb.AppendLine(i1, "{"); + sb.AppendLine(i2, "text.AppendLine();"); sb.AppendLine(); - sb.AppendLine(16, "foreach (var link in policy.Links)"); - sb.AppendLine(16, "{"); - sb.AppendLine(20, "if (link.Type != \"text/html\")"); - sb.AppendLine(20, "{"); - sb.AppendLine(24, "continue;"); - sb.AppendLine(20, "}"); + sb.AppendLine(i2, "foreach (var link in policy.Links)"); + sb.AppendLine(i2, "{"); + sb.AppendLine(i3, "if (link.Type != \"text/html\")"); + sb.AppendLine(i3, "{"); + sb.AppendLine(i4, "continue;"); + sb.AppendLine(i3, "}"); sb.AppendLine(); - sb.AppendLine(20, "text.AppendLine();"); + sb.AppendLine(i3, "text.AppendLine();"); sb.AppendLine(); - sb.AppendLine(20, "if (link.Title.HasValue)"); - sb.AppendLine(20, "{"); - sb.AppendLine(24, "text.Append(link.Title.Value).Append(\": \");"); - sb.AppendLine(20, "}"); + sb.AppendLine(i3, "if (link.Title.HasValue)"); + sb.AppendLine(i3, "{"); + sb.AppendLine(i4, "text.Append(link.Title.Value).Append(\": \");"); + sb.AppendLine(i3, "}"); sb.AppendLine(); - sb.AppendLine(20, "text.Append(link.LinkTarget.OriginalString);"); - sb.AppendLine(16, "}"); - sb.AppendLine(12, "}"); - sb.AppendLine(8, "}"); + sb.AppendLine(i3, "text.Append(link.LinkTarget.OriginalString);"); + sb.AppendLine(i2, "}"); + sb.AppendLine(i1, "}"); + sb.AppendLine(baseIndent, "}"); sb.AppendLine(); - sb.AppendLine(8, "info.Description = text.ToString();"); + } + + private static void AppendStringBuilderInit( + StringBuilder sb, + int baseIndent, + string? text) + { + sb.Append(baseIndent, "var text = new StringBuilder("); + if (!string.IsNullOrEmpty(text)) + { + sb.Append(BuildStringLiteral(text)); + } + sb.Append(");"); sb.AppendLine(); - sb.AppendLine(8, "return info;"); - sb.AppendLine(4, "}"); - sb.Append('}'); + } - return sb.ToString(); + private static void AppendContact( + StringBuilder sb, + int baseIndent, + string? name, + string? email, + string? url) + { + if (!Has(name) && + !Has(email) && + !Has(url)) + { + return; + } + + var innerIndent = baseIndent + 4; + + sb.AppendLine(baseIndent, "Contact = new OpenApiContact"); + sb.AppendLine(baseIndent, "{"); + if (Has(name)) + { + sb.AppendLine(innerIndent, $"Name = {BuildStringLiteral(name!)},"); + } + + if (Has(email)) + { + sb.AppendLine(innerIndent, $"Email = {BuildStringLiteral(email!)},"); + } + + if (Has(url)) + { + sb.AppendLine(innerIndent, $"Url = new Uri({BuildStringLiteral(url!)}),"); + } + + sb.AppendLine(baseIndent, "},"); } + + private static void AppendTermsOfService( + StringBuilder sb, + int indentBase, + string? termsUrl) + { + if (Has(termsUrl)) + { + sb.AppendLine(indentBase, $"TermsOfService = new Uri({BuildStringLiteral(termsUrl!)}),"); + } + } + + private static void AppendLicense( + StringBuilder sb, + int indentBase, + string? licenseName, + string? licenseUrl) + { + if (!Has(licenseName) && + !Has(licenseUrl)) + { + return; + } + + var innerIndent = indentBase + 4; + + sb.AppendLine(indentBase, "License = new OpenApiLicense"); + sb.AppendLine(indentBase, "{"); + if (Has(licenseName)) + { + sb.AppendLine(innerIndent, $"Name = {BuildStringLiteral(licenseName!)},"); + } + + if (Has(licenseUrl)) + { + sb.AppendLine(innerIndent, $"Url = new Uri({BuildStringLiteral(licenseUrl!)}),"); + } + + sb.AppendLine(indentBase, "},"); + } + + private static string BuildStringLiteral( + string text) + { + // Use verbatim if backslashes or newlines are present. + if (text.IndexOfAny(new[] { '\\', '\r', '\n' }) >= 0) + { + var verbatim = text.Replace("\"", "\"\"", StringComparison.Ordinal); + return "@\"" + verbatim + "\""; + } + + // Otherwise, use a normal C# string literal. + var normal = text + .Replace("\\", "\\\\", StringComparison.Ordinal) + .Replace("\"", "\\\"", StringComparison.Ordinal); + return "\"" + normal + "\""; + } + + private static bool Has( + string? s) + => !string.IsNullOrWhiteSpace(s); } \ No newline at end of file diff --git a/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientParameterParametersFactory.cs b/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientParameterParametersFactory.cs index 9110f4385..89f2fc972 100644 --- a/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientParameterParametersFactory.cs +++ b/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientParameterParametersFactory.cs @@ -109,7 +109,7 @@ private static void AppendParametersFromBody( { requestBodyType = "IFormFile"; } - else if (requestSchema.Items is not null) + else if (requestSchema.Items?.Reference is not null) { requestBodyType = requestSchema.Items.Reference.Id.PascalCase(ApiOperationExtractor.ModelNameSeparators, removeSeparators: true); } diff --git a/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientEnumParametersFactory.cs b/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientEnumParametersFactory.cs index f9b72e74a..4bade77e7 100644 --- a/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientEnumParametersFactory.cs +++ b/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientEnumParametersFactory.cs @@ -43,7 +43,7 @@ public static EnumParameters Create( { case 1: result.Add( - key: sa[0].Trim(), + key: sa[0].Trim().Replace(":", "-", StringComparison.CurrentCulture), value: null); break; case 2: diff --git a/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientModelParametersFactory.cs b/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientModelParametersFactory.cs index 715d33c14..02e29e6f2 100644 --- a/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientModelParametersFactory.cs +++ b/src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/ServerClient/ContentGeneratorServerClientModelParametersFactory.cs @@ -179,7 +179,13 @@ private static bool GetRequired( : $"{schema.GetModelName()}.{value.EnsureFirstCharacterToUpper()}"; } - return schema.Default.GetDefaultValueAsString(); + if (schema.Type is not null && + schema.Type != "object") + { + return schema.Default.GetDefaultValueAsString(); + } + + return null; } if (NameConstants.List.Equals(dataTypeForList, StringComparison.Ordinal)) @@ -252,7 +258,7 @@ private static List ExtractPropertiesParameters( if ("Object".Equals(dataType, StringComparison.Ordinal)) { - dataType = "object"; + dataType = OpenApiDataTypeConstants.Object; } } else @@ -269,7 +275,7 @@ private static List ExtractPropertiesParameters( } else { - dataType = "object"; + dataType = OpenApiDataTypeConstants.Object; } } } @@ -450,7 +456,7 @@ private static List ExtractRecordParameterBaseParameter if ("Object".Equals(dataType, StringComparison.Ordinal)) { - dataType = "object"; + dataType = OpenApiDataTypeConstants.Object; } } else @@ -467,7 +473,7 @@ private static List ExtractRecordParameterBaseParameter } else { - dataType = "object"; + dataType = OpenApiDataTypeConstants.Object; } } } diff --git a/src/Atc.Rest.ApiGenerator.Framework/Providers/NugetPackageReferenceProvider.cs b/src/Atc.Rest.ApiGenerator.Framework/Providers/NugetPackageReferenceProvider.cs index 0530c139a..b3d22ebc7 100644 --- a/src/Atc.Rest.ApiGenerator.Framework/Providers/NugetPackageReferenceProvider.cs +++ b/src/Atc.Rest.ApiGenerator.Framework/Providers/NugetPackageReferenceProvider.cs @@ -8,14 +8,14 @@ public class NugetPackageReferenceProvider( private Dictionary PackageDefaultVersions { get; } = new(StringComparer.Ordinal) { { "Asp.Versioning.Http", "8.1.0" }, - { "Atc", "2.0.552" }, + { "Atc", "2.0.560" }, { "Atc.Azure.Options", "3.0.34" }, - { "Atc.Rest", "2.0.552" }, + { "Atc.Rest", "2.0.560" }, { "Atc.Rest.Client", "1.0.84" }, - { "Atc.Rest.Extended", "2.0.552" }, - { "Atc.Rest.FluentAssertions", "2.0.552" }, + { "Atc.Rest.Extended", "2.0.560" }, + { "Atc.Rest.FluentAssertions", "2.0.560" }, { "Atc.Rest.MinimalApi", "1.0.87" }, - { "Atc.XUnit", "2.0.552" }, + { "Atc.XUnit", "2.0.560" }, { "AutoFixture", "4.18.1" }, { "AutoFixture.AutoNSubstitute", "4.18.1" }, { "AutoFixture.Xunit2", "4.18.1" }, diff --git a/src/Atc.Rest.ApiGenerator.Nuget/Atc.Rest.ApiGenerator.Nuget.csproj b/src/Atc.Rest.ApiGenerator.Nuget/Atc.Rest.ApiGenerator.Nuget.csproj index 876d3617f..0b1a6916b 100644 --- a/src/Atc.Rest.ApiGenerator.Nuget/Atc.Rest.ApiGenerator.Nuget.csproj +++ b/src/Atc.Rest.ApiGenerator.Nuget/Atc.Rest.ApiGenerator.Nuget.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/src/Atc.Rest.ApiGenerator.OpenApi/Atc.Rest.ApiGenerator.OpenApi.csproj b/src/Atc.Rest.ApiGenerator.OpenApi/Atc.Rest.ApiGenerator.OpenApi.csproj index db7e74e0e..87d99c445 100644 --- a/src/Atc.Rest.ApiGenerator.OpenApi/Atc.Rest.ApiGenerator.OpenApi.csproj +++ b/src/Atc.Rest.ApiGenerator.OpenApi/Atc.Rest.ApiGenerator.OpenApi.csproj @@ -6,19 +6,15 @@ - - - - - + + + + + - - - - diff --git a/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiAnyExtensions.cs b/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiAnyExtensions.cs index 9422855d4..63a2101e7 100644 --- a/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiAnyExtensions.cs +++ b/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiAnyExtensions.cs @@ -2,6 +2,43 @@ namespace Atc.Rest.ApiGenerator.OpenApi.Extensions; public static class OpenApiAnyExtensions { + /// + /// Returns a string representation of common OpenAPI primitives with predictable, culture-fixed formatting. + /// + /// + /// Formatting rules: + /// + /// Booleans"true"/"false" (lowercase JSON style). + /// Date"yyyy-MM-dd" (e.g., 2025-09-03), culture-fixed to avoid month/day swaps. + /// DateTime → ISO 8601 round-trip "O" (e.g., 2025-09-03T12:34:56.7890123+00:00). + /// Double/Float → standard numeric format "N" using en-US (group separators + decimals; e.g., 1,234.00). + /// Long/Integer → general numeric format "G" using en-US (no group separators, no decimals; e.g., 1234). + /// Null → the literal "null". + /// String/Password → empty → "string.Empty"; otherwise the raw value (unquoted). + /// + /// + /// Culture is fixed to (en-US) to ensure consistent output across environments. + /// + /// + /// The value to format (e.g., , , , , , , , , , ). + /// + /// The formatted string representation of ; if is . + /// + /// + /// Thrown when is an subtype not handled by this method. + /// + /// + /// + /// IOpenApiAny v1 = new OpenApiDouble(1234); + /// string? s1 = v1.GetDefaultValueAsString(); // "1,234.00" + /// + /// IOpenApiAny v2 = new OpenApiDate(new DateOnly(2025, 9, 3)); + /// string? s2 = v2.GetDefaultValueAsString(); // "2025-09-03" + /// + /// IOpenApiAny v3 = new OpenApiString(string.Empty); + /// string? s3 = v3.GetDefaultValueAsString(); // "string.Empty" + /// + /// public static string? GetDefaultValueAsString( this IOpenApiAny? openApiAny) { @@ -12,12 +49,17 @@ public static class OpenApiAnyExtensions return openApiAny switch { - OpenApiDouble apiDouble => apiDouble.Value.ToString("N"), - OpenApiFloat apiFloat => apiFloat.Value.ToString("N"), - OpenApiInteger apiInteger => apiInteger.Value.ToString(), - OpenApiString apiString => string.IsNullOrEmpty(apiString.Value) ? "string.Empty" : $"{apiString.Value}", OpenApiBoolean { Value: true } => "true", OpenApiBoolean { Value: false } => "false", + OpenApiDate apiDate => apiDate.Value.ToString("yyyy-MM-dd", GlobalizationConstants.EnglishCultureInfo), + OpenApiDateTime apiDateTime => apiDateTime.Value.ToString("O", GlobalizationConstants.EnglishCultureInfo), + OpenApiDouble apiDouble => apiDouble.Value.ToString("N", GlobalizationConstants.EnglishCultureInfo), + OpenApiFloat apiFloat => apiFloat.Value.ToString("N", GlobalizationConstants.EnglishCultureInfo), + OpenApiLong apiLong => apiLong.Value.ToString(GlobalizationConstants.EnglishCultureInfo), + OpenApiInteger apiInteger => apiInteger.Value.ToString(GlobalizationConstants.EnglishCultureInfo), + OpenApiNull => "null", + OpenApiPassword apiPassword => string.IsNullOrEmpty(apiPassword.Value) ? "string.Empty" : $"{apiPassword.Value}", + OpenApiString apiString => string.IsNullOrEmpty(apiString.Value) ? "string.Empty" : $"{apiString.Value}", _ => throw new NotImplementedException("Property initializer: " + openApiAny.GetType()), }; } diff --git a/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiParameterExtensions.cs b/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiParameterExtensions.cs index 1beac4a9f..b14090f61 100644 --- a/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiParameterExtensions.cs +++ b/src/Atc.Rest.ApiGenerator.OpenApi/Extensions/OpenApiParameterExtensions.cs @@ -47,7 +47,9 @@ public static bool ContainsEnumInSchemaOrProperties( var defaultValueInitializer = openApiParameter.Schema.GetDefaultValueAsString(); if (!string.IsNullOrEmpty(defaultValueInitializer) && - openApiParameter.ContainsEnumInSchemaOrProperties()) + openApiParameter.ContainsEnumInSchemaOrProperties() && + dataType != "long" && + dataType != "string") { defaultValueInitializer = dataType.Equals(parameterName, StringComparison.Ordinal) ? $"{contractNamespaceWithoutApiGroupName}.{dataType}.{defaultValueInitializer.PascalCase(ApiOperationExtractor.ModelNameSeparators, removeSeparators: true)}" diff --git a/src/Atc.Rest.ApiGenerator.OpenApi/Extractors/ApiOperationExtractor.cs b/src/Atc.Rest.ApiGenerator.OpenApi/Extractors/ApiOperationExtractor.cs index 438f5518e..9cf41e4b8 100644 --- a/src/Atc.Rest.ApiGenerator.OpenApi/Extractors/ApiOperationExtractor.cs +++ b/src/Atc.Rest.ApiGenerator.OpenApi/Extractors/ApiOperationExtractor.cs @@ -168,9 +168,9 @@ private static void CollectSchema( httpOperation, parentApiSchema, result); - } - return; + return; + } } (var schemaKey, apiSchema) = ConsolidateSchemaObjectTypes(apiSchema); diff --git a/src/Atc.Rest.ApiGenerator/Atc.Rest.ApiGenerator.csproj b/src/Atc.Rest.ApiGenerator/Atc.Rest.ApiGenerator.csproj index f3ffb12eb..7abfcef93 100644 --- a/src/Atc.Rest.ApiGenerator/Atc.Rest.ApiGenerator.csproj +++ b/src/Atc.Rest.ApiGenerator/Atc.Rest.ApiGenerator.csproj @@ -8,15 +8,15 @@ - - - - - + + + + + - - - + + + diff --git a/test/Atc.CodeGeneration.CSharp.Tests/Atc.CodeGeneration.CSharp.Tests.csproj b/test/Atc.CodeGeneration.CSharp.Tests/Atc.CodeGeneration.CSharp.Tests.csproj index dbe709dc2..ca57a4a0f 100644 --- a/test/Atc.CodeGeneration.CSharp.Tests/Atc.CodeGeneration.CSharp.Tests.csproj +++ b/test/Atc.CodeGeneration.CSharp.Tests/Atc.CodeGeneration.CSharp.Tests.csproj @@ -6,9 +6,9 @@ - + - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Atc.Rest.ApiGenerator.CLI.Tests/Atc.Rest.ApiGenerator.CLI.Tests.csproj b/test/Atc.Rest.ApiGenerator.CLI.Tests/Atc.Rest.ApiGenerator.CLI.Tests.csproj index 594b1588f..b9b360eda 100644 --- a/test/Atc.Rest.ApiGenerator.CLI.Tests/Atc.Rest.ApiGenerator.CLI.Tests.csproj +++ b/test/Atc.Rest.ApiGenerator.CLI.Tests/Atc.Rest.ApiGenerator.CLI.Tests.csproj @@ -63,16 +63,16 @@ - - - - - - + + + + + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/Monta/VerifyClient/WCEM/src/Monta.ApiClient.Generated/Contracts/_Shared/Pricing.verified.cs b/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/Monta/VerifyClient/WCEM/src/Monta.ApiClient.Generated/Contracts/_Shared/Pricing.verified.cs index f83b1bc59..9b2e1a769 100644 --- a/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/Monta/VerifyClient/WCEM/src/Monta.ApiClient.Generated/Contracts/_Shared/Pricing.verified.cs +++ b/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/Monta/VerifyClient/WCEM/src/Monta.ApiClient.Generated/Contracts/_Shared/Pricing.verified.cs @@ -57,7 +57,7 @@ public class Pricing /// /// Used by Spot Price. It will multiply the fallback price by this percentage. /// - public double? Percentage { get; set; } + public float? Percentage { get; set; } /// /// The id of the selected Tariff. diff --git a/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WOPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs b/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WOPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs index 6bc72eaf1..3a2f2bf28 100644 --- a/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WOPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs +++ b/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WOPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs @@ -39,7 +39,7 @@ public void Configure( private OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription description) { - var text = new StringBuilder(""); + var text = new StringBuilder(); var info = new OpenApiInfo { Title = $"{environment.ApplicationName} {description.GroupName.ToUpperInvariant()}", diff --git a/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs b/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs index 6bc72eaf1..3a2f2bf28 100644 --- a/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs +++ b/test/Atc.Rest.ApiGenerator.CLI.Tests/Scenarios/PetStore/VerifyServerAll/Mvc_WPD/src/PetStore.Api/Options/ConfigureSwaggerDocOptions.verified.cs @@ -39,7 +39,7 @@ public void Configure( private OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription description) { - var text = new StringBuilder(""); + var text = new StringBuilder(); var info = new OpenApiInfo { Title = $"{environment.ApplicationName} {description.GroupName.ToUpperInvariant()}", diff --git a/test/Atc.Rest.ApiGenerator.Contracts.Tests/Atc.Rest.ApiGenerator.Contracts.Tests.csproj b/test/Atc.Rest.ApiGenerator.Contracts.Tests/Atc.Rest.ApiGenerator.Contracts.Tests.csproj index e372a14ab..2701895ed 100644 --- a/test/Atc.Rest.ApiGenerator.Contracts.Tests/Atc.Rest.ApiGenerator.Contracts.Tests.csproj +++ b/test/Atc.Rest.ApiGenerator.Contracts.Tests/Atc.Rest.ApiGenerator.Contracts.Tests.csproj @@ -6,9 +6,9 @@ - + - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Atc.Rest.ApiGenerator.Framework.Mvc.Tests/Atc.Rest.ApiGenerator.Framework.Mvc.Tests.csproj b/test/Atc.Rest.ApiGenerator.Framework.Mvc.Tests/Atc.Rest.ApiGenerator.Framework.Mvc.Tests.csproj index 15b4084e6..3d4f4ceb2 100644 --- a/test/Atc.Rest.ApiGenerator.Framework.Mvc.Tests/Atc.Rest.ApiGenerator.Framework.Mvc.Tests.csproj +++ b/test/Atc.Rest.ApiGenerator.Framework.Mvc.Tests/Atc.Rest.ApiGenerator.Framework.Mvc.Tests.csproj @@ -7,9 +7,9 @@ - + - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Atc.Rest.ApiGenerator.Framework.Tests/Atc.Rest.ApiGenerator.Framework.Tests.csproj b/test/Atc.Rest.ApiGenerator.Framework.Tests/Atc.Rest.ApiGenerator.Framework.Tests.csproj index 2218d6231..42c309985 100644 --- a/test/Atc.Rest.ApiGenerator.Framework.Tests/Atc.Rest.ApiGenerator.Framework.Tests.csproj +++ b/test/Atc.Rest.ApiGenerator.Framework.Tests/Atc.Rest.ApiGenerator.Framework.Tests.csproj @@ -6,10 +6,10 @@ - - + + - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Atc.Rest.ApiGenerator.Nuget.Tests/Atc.Rest.ApiGenerator.Nuget.Tests.csproj b/test/Atc.Rest.ApiGenerator.Nuget.Tests/Atc.Rest.ApiGenerator.Nuget.Tests.csproj index 7557e0153..3a3539b7d 100644 --- a/test/Atc.Rest.ApiGenerator.Nuget.Tests/Atc.Rest.ApiGenerator.Nuget.Tests.csproj +++ b/test/Atc.Rest.ApiGenerator.Nuget.Tests/Atc.Rest.ApiGenerator.Nuget.Tests.csproj @@ -6,10 +6,10 @@ - - + + - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Atc.Rest.ApiGenerator.OpenApi.Tests/Atc.Rest.ApiGenerator.OpenApi.Tests.csproj b/test/Atc.Rest.ApiGenerator.OpenApi.Tests/Atc.Rest.ApiGenerator.OpenApi.Tests.csproj index 0228a0972..88cc9ca40 100644 --- a/test/Atc.Rest.ApiGenerator.OpenApi.Tests/Atc.Rest.ApiGenerator.OpenApi.Tests.csproj +++ b/test/Atc.Rest.ApiGenerator.OpenApi.Tests/Atc.Rest.ApiGenerator.OpenApi.Tests.csproj @@ -6,9 +6,9 @@ - + - + runtime; build; native; contentfiles; analyzers; buildtransitive all