diff --git a/modules/openapi-generator/src/main/resources/csharp/ClientUtils.mustache b/modules/openapi-generator/src/main/resources/csharp/ClientUtils.mustache index 4127944c4b0e..d5da856eadea 100644 --- a/modules/openapi-generator/src/main/resources/csharp/ClientUtils.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/ClientUtils.mustache @@ -221,8 +221,7 @@ namespace {{packageName}}.Client /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ namespace {{packageName}}.Client if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpClientCodegenTest.java index 975eb0eeb512..a68c968d5296 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpClientCodegenTest.java @@ -409,6 +409,30 @@ public void testUserAgentIsNotUrlEncoded() throws IOException { } } + @Test + public void testSelectHeaderAcceptKeepsAllTypesJsonFirst() throws IOException { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); + final DefaultGenerator defaultGenerator = new DefaultGenerator(); + final ClientOptInput clientOptInput = new ClientOptInput(); + clientOptInput.openAPI(openAPI); + CSharpClientCodegen cSharpClientCodegen = new CSharpClientCodegen(); + cSharpClientCodegen.setLibrary("restsharp"); + cSharpClientCodegen.setOutputDir(output.getAbsolutePath()); + clientOptInput.config(cSharpClientCodegen); + defaultGenerator.opts(clientOptInput); + + Map files = defaultGenerator.generate().stream() + .collect(Collectors.toMap(File::getPath, Function.identity())); + + File clientUtils = files + .get(Paths.get(output.getAbsolutePath(), "src", "Org.OpenAPITools", "Client", "ClientUtils.cs").toString()); + assertNotNull(clientUtils); + assertFileContains(clientUtils.toPath(), "accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)"); + assertFileNotContains(clientUtils.toPath(), "return \"application/json\";"); + } + @Test public void test31specAdditionalPropertiesOfOneOf() throws IOException { // for https://github.com/OpenAPITools/openapi-generator/pull/18772 diff --git a/samples/client/echo_api/csharp/restsharp/net8/EchoApi/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/echo_api/csharp/restsharp/net8/EchoApi/src/Org.OpenAPITools/Client/ClientUtils.cs index e3787b1a8311..5de0630accfe 100644 --- a/samples/client/echo_api/csharp/restsharp/net8/EchoApi/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/echo_api/csharp/restsharp/net8/EchoApi/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -206,8 +206,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -216,10 +215,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/others/csharp-complex-files/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/others/csharp-complex-files/src/Org.OpenAPITools/Client/ClientUtils.cs index d4d76fa0662c..d83b1e73aa81 100644 --- a/samples/client/others/csharp-complex-files/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/others/csharp-complex-files/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/httpclient/net10/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs index 2f93eb8fd38e..509d31240250 100644 --- a/samples/client/petstore/csharp/httpclient/net10/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 5976bafe2823..32c391dc9a5f 100644 --- a/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/httpclient/net9/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs index 2f93eb8fd38e..509d31240250 100644 --- a/samples/client/petstore/csharp/httpclient/net9/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore-nonPublicApi/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 5976bafe2823..32c391dc9a5f 100644 --- a/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 06699bfc386b..8e47a5169216 100644 --- a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net10/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net10/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs index 2f93eb8fd38e..509d31240250 100644 --- a/samples/client/petstore/csharp/restsharp/net10/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net10/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 5976bafe2823..32c391dc9a5f 100644 --- a/samples/client/petstore/csharp/restsharp/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools.Test/Client/AcceptHeaderTests.cs b/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools.Test/Client/AcceptHeaderTests.cs new file mode 100644 index 000000000000..e180c7ca246b --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools.Test/Client/AcceptHeaderTests.cs @@ -0,0 +1,46 @@ +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using Org.OpenAPITools.Api; +using Xunit; + +namespace Org.OpenAPITools.Test.Client +{ + public sealed class AcceptHeaderTests + { + [Fact] + public void MixedResponseTypes_SendsAllAcceptTypesJsonFirst() + { + var port = FreePort(); + using (var server = new HttpListener()) + { + server.Prefixes.Add("http://127.0.0.1:" + port + "/"); + server.Start(); + var accept = Task.Run(() => + { + var ctx = server.GetContext(); + var sent = ctx.Request.Headers["Accept"]; + var body = Encoding.UTF8.GetBytes("{\"name\":\"doggie\",\"photoUrls\":[]}"); + ctx.Response.ContentType = "application/json"; + ctx.Response.OutputStream.Write(body, 0, body.Length); + ctx.Response.Close(); + return sent; + }); + + new PetApi("http://127.0.0.1:" + port).GetPetById(1); + + Assert.Equal("application/json,application/xml", accept.Result); + } + } + + private static int FreePort() + { + var listener = new TcpListener(IPAddress.Loopback, 0); + listener.Start(); + var port = ((IPEndPoint)listener.LocalEndpoint).Port; + listener.Stop(); + return port; + } + } +} diff --git a/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools/Client/ClientUtils.cs index 66e372d5c6d9..472b6c1ff87b 100644 --- a/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net4.7/MultipleFrameworks/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 06699bfc386b..8e47a5169216 100644 --- a/samples/client/petstore/csharp/restsharp/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 06699bfc386b..8e47a5169216 100644 --- a/samples/client/petstore/csharp/restsharp/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net8/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net8/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs index 5976bafe2823..32c391dc9a5f 100644 --- a/samples/client/petstore/csharp/restsharp/net8/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net8/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net8/ParameterMappings/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net8/ParameterMappings/src/Org.OpenAPITools/Client/ClientUtils.cs index 7fa3d4709d28..8ad60804ffe9 100644 --- a/samples/client/petstore/csharp/restsharp/net8/ParameterMappings/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net8/ParameterMappings/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -205,8 +205,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -215,10 +214,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 5976bafe2823..32c391dc9a5f 100644 --- a/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs index 27c78cc269c8..a642a2750b42 100644 --- a/samples/client/petstore/csharp/restsharp/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -205,8 +205,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -215,10 +214,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net8/useVirtualForHooks/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net8/useVirtualForHooks/src/Org.OpenAPITools/Client/ClientUtils.cs index 02232ccae29f..238486a59320 100644 --- a/samples/client/petstore/csharp/restsharp/net8/useVirtualForHooks/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net8/useVirtualForHooks/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -205,8 +205,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -215,10 +214,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/net9/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/net9/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs index 5976bafe2823..32c391dc9a5f 100644 --- a/samples/client/petstore/csharp/restsharp/net9/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/net9/EnumMappings/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -221,8 +221,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -231,10 +230,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs index 06699bfc386b..8e47a5169216 100644 --- a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/restsharp/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 06699bfc386b..8e47a5169216 100644 --- a/samples/client/petstore/csharp/restsharp/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/restsharp/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -215,8 +215,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -225,10 +224,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index e4b650c9de82..a806c32691bf 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -205,8 +205,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -215,10 +214,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index e4b650c9de82..a806c32691bf 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -205,8 +205,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -215,10 +214,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } /// diff --git a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 5d6275437696..fdb55b0718e3 100644 --- a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -199,8 +199,7 @@ public static string SelectHeaderContentType(string[] contentTypes) /// /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// all of them, JSON types first (joining into a string) /// /// The accepts array to select from. /// The Accept header to use. @@ -209,10 +208,7 @@ public static string SelectHeaderAccept(string[] accepts) if (accepts.Length == 0) return null; - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return string.Join(",", accepts); + return string.Join(",", accepts.OrderBy(accept => IsJsonMime(accept) ? 0 : 1)); } ///