diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiException.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiException.mustache index ffc90cf11305..2100d391086a 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiException.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiException.mustache @@ -1,11 +1,11 @@ // {{>partial_header}} - {{#nrt}} #nullable enable {{/nrt}} using System; +using System.IO; namespace {{packageName}}.{{clientPackage}} { @@ -28,6 +28,11 @@ namespace {{packageName}}.{{clientPackage}} /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage{{#nrt}}?{{/nrt}} RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -35,13 +40,15 @@ namespace {{packageName}}.{{clientPackage}} /// /// /// - public ApiException(string{{nrt?}} reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string{{nrt?}} reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage{{#nrt}}?{{/nrt}} rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache index 3ac107fa7133..3cd0aaf7d0ff 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache @@ -49,6 +49,11 @@ namespace {{packageName}}.{{clientPackage}} /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -106,6 +111,11 @@ namespace {{packageName}}.{{clientPackage}} /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -144,6 +154,7 @@ namespace {{packageName}}.{{clientPackage}} { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -167,6 +178,7 @@ namespace {{packageName}}.{{clientPackage}} { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -178,6 +190,7 @@ namespace {{packageName}}.{{clientPackage}} OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } {{#x-http-statuses-with-return}} diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache index 357d2197cd97..8b5da1c12c6b 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache @@ -18,6 +18,7 @@ using {{packageName}}.{{modelPackage}}; {{/-first}} {{/models}} using System.Runtime.CompilerServices; +using System.Net.Http.Headers; {{>Assembly}}namespace {{packageName}}.{{clientPackage}} { @@ -311,6 +312,31 @@ using System.Runtime.CompilerServices; return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + {{#net80OrLater}} + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + {{/net80OrLater}} + {{^net80OrLater}} + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + {{/net80OrLater}} + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyJsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyJsonConverter.mustache index 1441421aa299..095b05d2fa07 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyJsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyJsonConverter.mustache @@ -17,7 +17,6 @@ namespace {{packageName}}.{{clientPackage}} /// public static string[] Formats { get; } = { {{>DateFormats}} - }; /// @@ -34,7 +33,7 @@ namespace {{packageName}}.{{clientPackage}} string value = reader.GetString(){{nrt!}}; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyNullableJsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyNullableJsonConverter.mustache index 53fdfbee7534..8608ae50635e 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyNullableJsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/DateOnlyNullableJsonConverter.mustache @@ -17,7 +17,6 @@ namespace {{packageName}}.{{clientPackage}} /// public static string[] Formats { get; } = { {{>DateFormats}} - }; /// @@ -34,7 +33,7 @@ namespace {{packageName}}.{{clientPackage}} string value = reader.GetString(){{nrt!}}; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/RateLimitProvider`1.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/RateLimitProvider`1.mustache index 7458dbd80c52..3dcda9599ebe 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/RateLimitProvider`1.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/RateLimitProvider`1.mustache @@ -1,6 +1,5 @@ // {{>partial_header}} - {{#nrt}} #nullable enable @@ -17,21 +16,21 @@ namespace {{packageName}}.{{clientPackage}} /// {{>visibility}} class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new{{^net70OrLater}} Dictionary>{{/net70OrLater}}(); + public Dictionary> AvailableTokens { get; } = new{{^net70OrLater}} Dictionary>{{/net70OrLater}}(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); {{#lambda.copy}} - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -45,7 +44,7 @@ namespace {{packageName}}.{{clientPackage}} { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -65,7 +64,7 @@ namespace {{packageName}}.{{clientPackage}} {{/hasApiKeyMethods}} foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { {{#hasApiKeyMethods}} if (token is ApiKeyToken apiKeyToken) @@ -85,7 +84,7 @@ namespace {{packageName}}.{{clientPackage}} } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default{{^netstandard20OrLater}}(global::System.Threading.CancellationToken){{/netstandard20OrLater}}) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default{{^netstandard20OrLater}}(global::System.Threading.CancellationToken){{/netstandard20OrLater}}) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel{{nrt?}} tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenBase.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenBase.mustache index 05f06b4a7a58..d4d520e67c1d 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenBase.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenBase.mustache @@ -19,8 +19,8 @@ namespace {{packageName}}.{{clientPackage}} internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler{{nrt?}} TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler{{nrt?}} TokenBecameAvailable; /// diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenProvider`1.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenProvider`1.mustache index 9fc5f3ea081f..21dc823e64f5 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenProvider`1.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/TokenProvider`1.mustache @@ -1,6 +1,5 @@ // {{>partial_header}} - {{#nrt}} #nullable enable @@ -17,23 +16,6 @@ namespace {{packageName}} /// {{>visibility}} abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default{{^netstandard20OrLater}}(global::System.Threading.CancellationToken){{/netstandard20OrLater}}); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default{{^netstandard20OrLater}}(global::System.Threading.CancellationToken){{/netstandard20OrLater}}); } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache index 2ebe38a2919e..f75235833fbe 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache @@ -8,6 +8,7 @@ {{/nrt}} using System; using System.Collections.Generic; +using System.Collections.ObjectModel; {{#net80OrLater}} {{#lambda.uniqueLines}} {{#operations}} @@ -20,6 +21,7 @@ using System.Linq; {{/lambda.uniqueLines}} {{/net80OrLater}} using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -605,10 +607,10 @@ namespace {{packageName}}.{{apiPackage}} {{#produces}} {{#-first}} - string{{nrt?}} acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); {{/-first}} {{/produces}} {{#net60OrLater}} diff --git a/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache b/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache index 0754f738231b..171b7b572032 100644 --- a/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache @@ -36,13 +36,68 @@ {{/useRestSharp}} {{#useGenericHost}} - - + + {{#netStandard}} + + + {{/netStandard}} + {{#net47}} + + + {{/net47}} + {{#net48}} + + + {{/net48}} + + {{#net6.0}} + + + {{/net6.0}} + {{#net7.0}} + + + {{/net7.0}} + {{#net8.0}} + + + {{/net8.0}} + {{#net9.0}} + + + {{/net9.0}} {{#supportsRetry}} - + {{#netStandard}} + + {{/netStandard}} + {{#net47}} + + {{/net47}} + {{#net48}} + + {{/net48}} + {{#net6.0}} + + {{/net6.0}} + {{#net7.0}} + + {{/net7.0}} + {{#net8.0}} + + {{/net8.0}} + {{#net9.0}} + + {{/net9.0}} {{/supportsRetry}} {{#net80OrLater}} - + {{#net8.0}} + + + {{/net8.0}} + {{#net9.0}} + + + {{/net9.0}} {{/net80OrLater}} {{^net60OrLater}} diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiException.cs index 54060b846443..61c0c032304f 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 1621a6122d6f..378e7f3a86ae 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } } diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ClientUtils.cs index c72d032fc8f1..feaae5451542 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -226,6 +227,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index fbbfa1bc4561..b27e4135a90c 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 781bae3e4967..63e74004c120 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 6fb9a04f0788..f63da5269861 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3d8a2168d4ff..41825a6caa05 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Api/DefaultApi.cs index f551e16fc2f6..addbd3372e39 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiException.cs index d972131a1b82..3d7c3b6a6696 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiResponse`1.cs index d7a8aa9e0b7b..0b9df641d68f 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } } diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ClientUtils.cs index 4d0ea7aa7bcc..5e06fc1af5c4 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -220,6 +221,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 63be8509932f..7f1b895e5806 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 0a3ee74c97f9..2ffffaed4413 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c59dd2d19387..c0412ba14517 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36816eb367b6..4a2eeb313648 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/latest/HelloWorld/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 681cc7ac29cc..1a2db06bc669 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -253,10 +255,10 @@ public async Task IconsAsync(Option size "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiException.cs index 76274524017f..3316284c3af6 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index f786ed6177f6..d28bf0591331 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 3b7bf799d5f0..1c4ccdebfe18 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -222,6 +223,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index c9dc766e4639..b2b5383529f9 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 5e42c9efb856..126f065a49e0 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index ecb58bf81e2e..b9c83e6c816a 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index b873d5323e7a..2d668528ef65 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/latest/InlineEnumAnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Api/DefaultApi.cs index 40a0a9a1b91b..80d4d815da60 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiException.cs index d27949b41749..fb04f5661425 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 5c0e0a406103..1e4685882e8f 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } } diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ClientUtils.cs index afcf529d354a..1e125976caab 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -220,6 +221,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 2e5274b1543d..aeadc3f1047d 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 0481f4f135c6..b620e26462ed 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 8d21b1ab34ad..c204a0e8f20c 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenProvider`1.cs index f0fdd6d9b3fe..56f0a7675aec 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKEYSApi.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKEYSApi.cs index b69c228b8aa0..fd57946c5dd0 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKEYSApi.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKEYSApi.cs @@ -13,7 +13,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKeys0Api.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKeys0Api.cs index 34ae08c7617a..f556390bafd1 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKeys0Api.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/APIKeys0Api.cs @@ -13,7 +13,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/ApiKeys1Api.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/ApiKeys1Api.cs index c447103ad329..805dbed90ca5 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/ApiKeys1Api.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Api/ApiKeys1Api.cs @@ -13,7 +13,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiException.cs index 2e24a58ea04e..d23297e51011 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiException.cs @@ -8,10 +8,10 @@ * Contact: support@files.com * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -34,6 +34,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -41,13 +46,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiResponse`1.cs index d0228c7e4df9..3c5feaf03db9 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -53,6 +53,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -110,6 +115,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -148,6 +158,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -171,6 +182,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -182,6 +194,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } } diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ClientUtils.cs index 5d088a4aed4d..50f31d60c939 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.Json; using System.Text.RegularExpressions; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -246,6 +247,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 2e5bda82ea8f..fad852057360 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -27,7 +27,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -44,7 +43,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 0ced717f3e38..17cdff660345 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -27,7 +27,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -44,7 +43,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index d1ee774f5f37..6aa0f0099bdc 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -8,7 +8,6 @@ * Contact: support@files.com * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -23,15 +22,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -42,7 +41,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -50,16 +49,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -74,7 +73,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 19ecb6691081..a65bd07d9681 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -8,7 +8,6 @@ * Contact: support@files.com * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -23,23 +22,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/latest/Tags/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs index e3c6fb7ce136..64fe997457fc 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -245,10 +247,10 @@ public async Task ListAsync(string personId, System.Threading. "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiException.cs index 78fdad8039f0..012808d7cb91 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 2e8d3c4f3ea0..6bebfb495ae7 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 7c70740b5f30..c50ca60e7a6c 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -231,6 +232,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 63bef256d7e2..a7fab6db873c 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index ed829aca7729..c96d82895566 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index c6529e054024..357ba4275a21 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 0a27d3740aad..68ba3478d01e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs index 1d43e69742f6..94bbed810c4b 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index ce423c3672b1..6a95178fbe47 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs index e58706bfa7d4..fdbcff211e46 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -231,6 +232,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c5a5ad7e2e6c..48125a7ddb8b 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3924246ab7c2..08831f405128 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index c6529e054024..357ba4275a21 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs index 0a27d3740aad..68ba3478d01e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs index 1d43e69742f6..94bbed810c4b 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs index ce423c3672b1..6a95178fbe47 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs index b15038a3fa36..615bd9dce801 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -17,6 +17,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -216,6 +217,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c5a5ad7e2e6c..48125a7ddb8b 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3924246ab7c2..08831f405128 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 201640a24d33..0b2064077788 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -21,9 +21,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index aac86867879b..3e40f393851e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs index 15e2eae1ae7d..d71ddb553fa8 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -963,10 +965,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1180,10 +1182,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1403,10 +1405,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1620,10 +1622,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs index 1d61e33426f3..cdfa43a79786 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1618,10 +1620,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1872,10 +1874,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2113,10 +2115,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2379,10 +2381,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2596,10 +2598,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2813,10 +2815,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3030,10 +3032,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3938,10 +3940,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 6fa54b15e6dd..c6b04ab0ec52 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/PetApi.cs index fc6b872e7d1e..018ebf57f116 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1260,10 +1262,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1560,10 +1562,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1812,10 +1814,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2607,10 +2609,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2896,10 +2898,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs index d53082a6604f..8ef5b2a44f76 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -654,10 +656,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -887,10 +889,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1153,10 +1155,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/UserApi.cs index 31f82a00fba1..79f232b766b8 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1555,10 +1557,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1869,10 +1871,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 846993850534..ed63e072b901 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs index 0f6a46e313a2..8cfa23d0b45f 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -331,6 +332,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 36e3def7fcd2..56d245063001 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj index c6529e054024..357ba4275a21 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 0a27d3740aad..68ba3478d01e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiException.cs index 1d43e69742f6..94bbed810c4b 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index ce423c3672b1..6a95178fbe47 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs index e58706bfa7d4..fdbcff211e46 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -231,6 +232,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c5a5ad7e2e6c..48125a7ddb8b 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3924246ab7c2..08831f405128 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index c6529e054024..357ba4275a21 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index aac86867879b..3e40f393851e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs index 15e2eae1ae7d..d71ddb553fa8 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -963,10 +965,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1180,10 +1182,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1403,10 +1405,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1620,10 +1622,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs index bfa82e80ee7d..7934ed315955 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1618,10 +1620,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1872,10 +1874,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2113,10 +2115,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2379,10 +2381,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2596,10 +2598,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2813,10 +2815,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3030,10 +3032,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3938,10 +3940,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 6fa54b15e6dd..c6b04ab0ec52 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/PetApi.cs index 936621915c2f..7a39918bdc41 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1260,10 +1262,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1560,10 +1562,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1812,10 +1814,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2607,10 +2609,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2896,10 +2898,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs index d53082a6604f..8ef5b2a44f76 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -654,10 +656,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -887,10 +889,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1153,10 +1155,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/UserApi.cs index 31f82a00fba1..79f232b766b8 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1555,10 +1557,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1869,10 +1871,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 846993850534..ed63e072b901 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 382636b9c592..939401e358ae 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -335,6 +336,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 36e3def7fcd2..56d245063001 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj index c6529e054024..357ba4275a21 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs index 352be5701a5f..106a89faf551 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task NowGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs index cf39d3c11d75..26fccfcf170e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs index a5cba0e52ef5..15cf34abd897 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs index 9d704244ca60..cd01b5984e8c 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -17,6 +17,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -216,6 +217,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index d30ab81debfc..0ce12c7c7262 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 069d52308681..a7c8e2a4567e 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 201640a24d33..0b2064077788 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.7/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -21,9 +21,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs index e3c6fb7ce136..64fe997457fc 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -245,10 +247,10 @@ public async Task ListAsync(string personId, System.Threading. "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs index 78fdad8039f0..012808d7cb91 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 2e8d3c4f3ea0..6bebfb495ae7 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 7c70740b5f30..c50ca60e7a6c 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -231,6 +232,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 63bef256d7e2..a7fab6db873c 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index ed829aca7729..c96d82895566 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 73a85280057e..32a196acbc26 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 0a27d3740aad..68ba3478d01e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs index 1d43e69742f6..94bbed810c4b 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index ce423c3672b1..6a95178fbe47 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs index e58706bfa7d4..fdbcff211e46 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -231,6 +232,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c5a5ad7e2e6c..48125a7ddb8b 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3924246ab7c2..08831f405128 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 73a85280057e..32a196acbc26 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs index 0a27d3740aad..68ba3478d01e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs index 1d43e69742f6..94bbed810c4b 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs index ce423c3672b1..6a95178fbe47 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs index b15038a3fa36..615bd9dce801 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -17,6 +17,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -216,6 +217,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c5a5ad7e2e6c..48125a7ddb8b 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3924246ab7c2..08831f405128 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 82bb1c228e8a..fb02eb576b7c 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -21,9 +21,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index aac86867879b..3e40f393851e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs index 15e2eae1ae7d..d71ddb553fa8 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -963,10 +965,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1180,10 +1182,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1403,10 +1405,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1620,10 +1622,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs index 1d61e33426f3..cdfa43a79786 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1618,10 +1620,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1872,10 +1874,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2113,10 +2115,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2379,10 +2381,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2596,10 +2598,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2813,10 +2815,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3030,10 +3032,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3938,10 +3940,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 6fa54b15e6dd..c6b04ab0ec52 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs index fc6b872e7d1e..018ebf57f116 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1260,10 +1262,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1560,10 +1562,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1812,10 +1814,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2607,10 +2609,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2896,10 +2898,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs index d53082a6604f..8ef5b2a44f76 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -654,10 +656,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -887,10 +889,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1153,10 +1155,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs index 31f82a00fba1..79f232b766b8 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1555,10 +1557,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1869,10 +1871,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 846993850534..ed63e072b901 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs index 0f6a46e313a2..8cfa23d0b45f 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -331,6 +332,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 36e3def7fcd2..56d245063001 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 73a85280057e..32a196acbc26 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 0a27d3740aad..68ba3478d01e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs index 1d43e69742f6..94bbed810c4b 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index ce423c3672b1..6a95178fbe47 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs index e58706bfa7d4..fdbcff211e46 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -231,6 +232,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index c5a5ad7e2e6c..48125a7ddb8b 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 3924246ab7c2..08831f405128 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 73a85280057e..32a196acbc26 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index aac86867879b..3e40f393851e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs index 15e2eae1ae7d..d71ddb553fa8 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -963,10 +965,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1180,10 +1182,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1403,10 +1405,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1620,10 +1622,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs index bfa82e80ee7d..7934ed315955 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1618,10 +1620,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1872,10 +1874,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2113,10 +2115,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2379,10 +2381,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2596,10 +2598,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2813,10 +2815,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3030,10 +3032,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3938,10 +3940,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 6fa54b15e6dd..c6b04ab0ec52 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs index 936621915c2f..7a39918bdc41 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1260,10 +1262,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1560,10 +1562,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1812,10 +1814,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2607,10 +2609,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2896,10 +2898,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs index d53082a6604f..8ef5b2a44f76 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -654,10 +656,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -887,10 +889,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1153,10 +1155,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs index 31f82a00fba1..79f232b766b8 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1555,10 +1557,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1869,10 +1871,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 846993850534..ed63e072b901 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 382636b9c592..939401e358ae 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -335,6 +336,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 36e3def7fcd2..56d245063001 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 73a85280057e..32a196acbc26 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs index 352be5701a5f..106a89faf551 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -219,10 +221,10 @@ public async Task NowGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs index cf39d3c11d75..26fccfcf170e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs index a5cba0e52ef5..15cf34abd897 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs index 9d704244ca60..cd01b5984e8c 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -17,6 +17,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -216,6 +217,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index d30ab81debfc..0ce12c7c7262 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,32 +19,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 069d52308681..a7c8e2a4567e 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 82bb1c228e8a..fb02eb576b7c 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net4.8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -21,9 +21,11 @@ - - - + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 460adaf3b6ea..1836f05b9946 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -247,10 +249,10 @@ public async Task ListAsync(string personId, System.Threading. "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs index eaf62115550f..eb91d410dd3b 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index b6971b20a70b..78160f0c716c 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs index ea0ca69d6ace..999a06052ebf 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -235,6 +236,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index f7fe93629939..330d35b67c1e 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index a5cb490f3ef1..b50b7eb64734 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 8fad79610119..33cbfdf382b2 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 25a52d3c7185..16359b31aa40 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index fad95b68dbdd..46075e7de24b 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 3d166af1486d..8808c802f0af 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs index 6ca1d86d4a35..757a49a00ad0 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 349c8a275dd2..ecf92d6ce3d9 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 2406e1ca0078..93ba6d60d9a1 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -235,6 +236,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 5009ae5304f7..4e9f5e2ebbc7 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 02dda463ab26..f4670fb7b2e5 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index f94f9dd79432..52c1566369c1 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index db3ce767d4af..0f375142c129 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index fad95b68dbdd..46075e7de24b 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs index 3d166af1486d..8808c802f0af 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs index 6ca1d86d4a35..757a49a00ad0 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 349c8a275dd2..ecf92d6ce3d9 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs index 0de5dc0426d7..1c9aaefff8db 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -220,6 +221,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 5009ae5304f7..4e9f5e2ebbc7 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 02dda463ab26..f4670fb7b2e5 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index f94f9dd79432..52c1566369c1 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs index db3ce767d4af..0f375142c129 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 9f99b6957b6d..e9b4471a41b4 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index a64bf2f6891b..507491eecacf 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs index be1d170c656f..3ef2b6852935 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -964,10 +966,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1182,10 +1184,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1406,10 +1408,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1624,10 +1626,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs index b12a70964930..808f2c78376e 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1619,10 +1621,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1874,10 +1876,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2116,10 +2118,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2383,10 +2385,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2601,10 +2603,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2819,10 +2821,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3037,10 +3039,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3946,10 +3948,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 8f1e1cbae536..f549d11cfbdd 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs index c7851f91380c..18c30d4185ac 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1261,10 +1263,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1562,10 +1564,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1815,10 +1817,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2611,10 +2613,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2901,10 +2903,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs index 2a5f045dc2fb..01cc491c8607 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -655,10 +657,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -889,10 +891,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1156,10 +1158,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs index b37dc6ffc7f0..57037a1fc421 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,8 +10,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1564,10 +1566,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1879,10 +1881,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs index cd0c6be12fec..eb72371af4ec 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs index 895f77e556ba..aa4709b51d44 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -330,6 +331,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 11b100056516..adc76fde17c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 92ef8f6c92bf..b9caf2fd5375 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 032ba306e4fc..a80e46b27082 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj index d3c06f120ffe..336dec2dfb10 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 4325815a3894..cfff49d74e47 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -294,10 +296,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs index 041224a07eb0..698f0b6c57c9 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -529,10 +531,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -966,10 +968,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1184,10 +1186,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1408,10 +1410,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1626,10 +1628,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs index 657ea7aea6d2..354123e492f4 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1379,10 +1381,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1621,10 +1623,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1876,10 +1878,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2118,10 +2120,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2385,10 +2387,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2603,10 +2605,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2821,10 +2823,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3039,10 +3041,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3948,10 +3950,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index f64b9b185445..e853974c29f7 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -303,10 +305,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs index 86ed00cc3d0a..cef7ea20cff4 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1263,10 +1265,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1564,10 +1566,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1817,10 +1819,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2613,10 +2615,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2903,10 +2905,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs index 397183c6f558..114540a6a25a 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -657,10 +659,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -891,10 +893,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1158,10 +1160,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs index 0ce74696e182..f4060809ed50 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs @@ -12,8 +12,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1566,10 +1568,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1881,10 +1883,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs index 76274524017f..3316284c3af6 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 657be352a23d..8d6eb4de2804 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs index 8a3b1e1511b2..635c899f80db 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -336,6 +337,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index c9dc766e4639..b2b5383529f9 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 5e42c9efb856..126f065a49e0 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index e7ce16aae043..1906bd99d8fe 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,15 +21,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -41,7 +40,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -49,16 +48,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -73,7 +72,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs index b873d5323e7a..2d668528ef65 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj index fad95b68dbdd..46075e7de24b 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 3d166af1486d..8808c802f0af 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs index 6ca1d86d4a35..757a49a00ad0 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 349c8a275dd2..ecf92d6ce3d9 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 2406e1ca0078..93ba6d60d9a1 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -235,6 +236,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 5009ae5304f7..4e9f5e2ebbc7 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 02dda463ab26..f4670fb7b2e5 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index f94f9dd79432..52c1566369c1 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index db3ce767d4af..0f375142c129 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index fad95b68dbdd..46075e7de24b 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index a64bf2f6891b..507491eecacf 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs index be1d170c656f..3ef2b6852935 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -964,10 +966,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1182,10 +1184,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1406,10 +1408,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1624,10 +1626,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs index 76b141c8120e..88fd2f848719 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1619,10 +1621,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1874,10 +1876,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2116,10 +2118,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2383,10 +2385,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2601,10 +2603,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2819,10 +2821,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3037,10 +3039,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3946,10 +3948,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 8f1e1cbae536..f549d11cfbdd 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs index 8cebfe5dc0ed..4442fc5d0e2f 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1261,10 +1263,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1562,10 +1564,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1815,10 +1817,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2611,10 +2613,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2901,10 +2903,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs index 2a5f045dc2fb..01cc491c8607 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -655,10 +657,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -889,10 +891,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1156,10 +1158,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs index b37dc6ffc7f0..57037a1fc421 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,8 +10,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1564,10 +1566,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1879,10 +1881,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs index cd0c6be12fec..eb72371af4ec 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 91be9bd4c0f8..701c1013f74d 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -334,6 +335,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 11b100056516..adc76fde17c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 92ef8f6c92bf..b9caf2fd5375 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 032ba306e4fc..a80e46b27082 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj index d3c06f120ffe..336dec2dfb10 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 4325815a3894..cfff49d74e47 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -294,10 +296,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs index 041224a07eb0..698f0b6c57c9 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -529,10 +531,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -966,10 +968,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1184,10 +1186,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1408,10 +1410,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1626,10 +1628,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs index 657ea7aea6d2..354123e492f4 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1379,10 +1381,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1621,10 +1623,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1876,10 +1878,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2118,10 +2120,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2385,10 +2387,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2603,10 +2605,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2821,10 +2823,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3039,10 +3041,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3948,10 +3950,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index f64b9b185445..e853974c29f7 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -303,10 +305,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs index 86ed00cc3d0a..cef7ea20cff4 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1263,10 +1265,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1564,10 +1566,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1817,10 +1819,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2613,10 +2615,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2903,10 +2905,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs index 397183c6f558..114540a6a25a 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -657,10 +659,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -891,10 +893,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1158,10 +1160,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs index 0ce74696e182..f4060809ed50 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs @@ -12,8 +12,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1566,10 +1568,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1881,10 +1883,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs index 76274524017f..3316284c3af6 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 657be352a23d..8d6eb4de2804 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs index 8a3b1e1511b2..635c899f80db 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -336,6 +337,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index c9dc766e4639..b2b5383529f9 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 5e42c9efb856..126f065a49e0 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index e7ce16aae043..1906bd99d8fe 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,15 +21,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -41,7 +40,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -49,16 +48,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -73,7 +72,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs index b873d5323e7a..2d668528ef65 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj index fad95b68dbdd..46075e7de24b 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs index 610a3704b124..adaf287f4aa7 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task NowGetAsync(System.Threading.CancellationT "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs index f7cda3e72ce2..a7b1ca134e4c 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs index e64afdb6bee7..344e2255924b 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs index 7f26eb170ddc..1d7bad8c4918 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -220,6 +221,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index ec5c9f28e943..dd1ee701bb69 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs index d9c84d5cc775..36ae5069699f 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 9f99b6957b6d..e9b4471a41b4 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 460adaf3b6ea..1836f05b9946 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -247,10 +249,10 @@ public async Task ListAsync(string personId, System.Threading. "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiException.cs index eaf62115550f..eb91d410dd3b 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index b6971b20a70b..78160f0c716c 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs index ea0ca69d6ace..999a06052ebf 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -235,6 +236,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index f7fe93629939..330d35b67c1e 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index a5cb490f3ef1..b50b7eb64734 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 8fad79610119..33cbfdf382b2 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 25a52d3c7185..16359b31aa40 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index a5902dc67f8f..55e4b3391c27 100644 --- a/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/AllOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 3d166af1486d..8808c802f0af 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs index 6ca1d86d4a35..757a49a00ad0 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 349c8a275dd2..ecf92d6ce3d9 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 2406e1ca0078..93ba6d60d9a1 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -235,6 +236,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 5009ae5304f7..4e9f5e2ebbc7 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 02dda463ab26..f4670fb7b2e5 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index f94f9dd79432..52c1566369c1 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index db3ce767d4af..0f375142c129 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index a5902dc67f8f..55e4b3391c27 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/AnyOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs index 3d166af1486d..8808c802f0af 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs index 6ca1d86d4a35..757a49a00ad0 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 349c8a275dd2..ecf92d6ce3d9 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs index 0de5dc0426d7..1c9aaefff8db 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -220,6 +221,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 5009ae5304f7..4e9f5e2ebbc7 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 02dda463ab26..f4670fb7b2e5 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index f94f9dd79432..52c1566369c1 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs index db3ce767d4af..0f375142c129 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index a64bf2f6891b..507491eecacf 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs index be1d170c656f..3ef2b6852935 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -964,10 +966,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1182,10 +1184,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1406,10 +1408,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1624,10 +1626,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs index b12a70964930..808f2c78376e 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1619,10 +1621,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1874,10 +1876,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2116,10 +2118,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2383,10 +2385,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2601,10 +2603,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2819,10 +2821,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3037,10 +3039,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3946,10 +3948,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 8f1e1cbae536..f549d11cfbdd 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/PetApi.cs index c7851f91380c..18c30d4185ac 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1261,10 +1263,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1562,10 +1564,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1815,10 +1817,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2611,10 +2613,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2901,10 +2903,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs index 2a5f045dc2fb..01cc491c8607 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -655,10 +657,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -889,10 +891,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1156,10 +1158,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/UserApi.cs index b37dc6ffc7f0..57037a1fc421 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,8 +10,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1564,10 +1566,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1879,10 +1881,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs index cd0c6be12fec..eb72371af4ec 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs index 895f77e556ba..aa4709b51d44 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -330,6 +331,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 11b100056516..adc76fde17c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 92ef8f6c92bf..b9caf2fd5375 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 032ba306e4fc..a80e46b27082 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 5b811b46a1dc..8312c7dfb443 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 4325815a3894..cfff49d74e47 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -294,10 +296,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs index 041224a07eb0..698f0b6c57c9 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -529,10 +531,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -966,10 +968,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1184,10 +1186,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1408,10 +1410,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1626,10 +1628,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs index 657ea7aea6d2..354123e492f4 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1379,10 +1381,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1621,10 +1623,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1876,10 +1878,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2118,10 +2120,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2385,10 +2387,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2603,10 +2605,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2821,10 +2823,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3039,10 +3041,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3948,10 +3950,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index f64b9b185445..e853974c29f7 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -303,10 +305,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs index 86ed00cc3d0a..cef7ea20cff4 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/PetApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1263,10 +1265,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1564,10 +1566,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1817,10 +1819,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2613,10 +2615,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2903,10 +2905,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs index 397183c6f558..114540a6a25a 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/StoreApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -657,10 +659,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -891,10 +893,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1158,10 +1160,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs index 0ce74696e182..f4060809ed50 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Api/UserApi.cs @@ -12,8 +12,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1566,10 +1568,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1881,10 +1883,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs index 76274524017f..3316284c3af6 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 657be352a23d..8d6eb4de2804 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs index 8a3b1e1511b2..635c899f80db 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -336,6 +337,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index c9dc766e4639..b2b5383529f9 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 5e42c9efb856..126f065a49e0 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index e7ce16aae043..1906bd99d8fe 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,15 +21,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -41,7 +40,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -49,16 +48,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -73,7 +72,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs index b873d5323e7a..2d668528ef65 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj index a5902dc67f8f..55e4b3391c27 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 3d166af1486d..8808c802f0af 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task RootGetAsync(System.Threading.Cancellatio "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiException.cs index 6ca1d86d4a35..757a49a00ad0 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 349c8a275dd2..ecf92d6ce3d9 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs index 2406e1ca0078..93ba6d60d9a1 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -235,6 +236,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 5009ae5304f7..4e9f5e2ebbc7 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 02dda463ab26..f4670fb7b2e5 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index f94f9dd79432..52c1566369c1 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs index db3ce767d4af..0f375142c129 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 0.0.1 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj index a5902dc67f8f..55e4b3391c27 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index a64bf2f6891b..507491eecacf 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -292,10 +294,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs index be1d170c656f..3ef2b6852935 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -527,10 +529,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -964,10 +966,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1182,10 +1184,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1406,10 +1408,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1624,10 +1626,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs index 76b141c8120e..88fd2f848719 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1377,10 +1379,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1619,10 +1621,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1874,10 +1876,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2116,10 +2118,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2383,10 +2385,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2601,10 +2603,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2819,10 +2821,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3037,10 +3039,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3946,10 +3948,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 8f1e1cbae536..f549d11cfbdd 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -301,10 +303,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/PetApi.cs index 8cebfe5dc0ed..4442fc5d0e2f 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1261,10 +1263,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1562,10 +1564,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1815,10 +1817,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2611,10 +2613,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2901,10 +2903,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs index 2a5f045dc2fb..01cc491c8607 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -655,10 +657,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -889,10 +891,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1156,10 +1158,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/UserApi.cs index b37dc6ffc7f0..57037a1fc421 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,8 +10,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1564,10 +1566,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1879,10 +1881,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs index cd0c6be12fec..eb72371af4ec 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -50,6 +50,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -107,6 +112,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -145,6 +155,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -168,6 +179,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -179,6 +191,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 91be9bd4c0f8..701c1013f74d 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -334,6 +335,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index 11b100056516..adc76fde17c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 92ef8f6c92bf..b9caf2fd5375 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString(); foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 032ba306e4fc..a80e46b27082 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 5b811b46a1dc..8312c7dfb443 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 4325815a3894..cfff49d74e47 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -294,10 +296,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs index 041224a07eb0..698f0b6c57c9 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -529,10 +531,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -966,10 +968,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1184,10 +1186,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1408,10 +1410,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1626,10 +1628,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs index 657ea7aea6d2..354123e492f4 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1379,10 +1381,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1621,10 +1623,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -1876,10 +1878,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2118,10 +2120,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2385,10 +2387,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2603,10 +2605,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2821,10 +2823,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3039,10 +3041,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -3948,10 +3950,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index f64b9b185445..e853974c29f7 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -303,10 +305,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Patch; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs index 86ed00cc3d0a..cef7ea20cff4 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/PetApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1263,10 +1265,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1564,10 +1566,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1817,10 +1819,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -2613,10 +2615,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; @@ -2903,10 +2905,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs index 397183c6f558..114540a6a25a 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/StoreApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -657,10 +659,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -891,10 +893,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1158,10 +1160,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Post; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs index 0ce74696e182..f4060809ed50 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Api/UserApi.cs @@ -12,8 +12,10 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1566,10 +1568,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; @@ -1881,10 +1883,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs index 76274524017f..3316284c3af6 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 657be352a23d..8d6eb4de2804 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs index 8a3b1e1511b2..635c899f80db 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -20,6 +20,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -336,6 +337,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs index c9dc766e4639..b2b5383529f9 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, Jso string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs index 5e42c9efb856..126f065a49e0 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs @@ -26,7 +26,6 @@ public class DateOnlyNullableJsonConverter : JsonConverter public static string[] Formats { get; } = { "yyyy'-'MM'-'dd", "yyyyMMdd" - }; /// @@ -43,7 +42,7 @@ public class DateOnlyNullableJsonConverter : JsonConverter string value = reader.GetString()!; foreach(string format in Formats) - if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateOnly result)) + if (DateOnly.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateOnly result)) return result; throw new NotSupportedException(); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index e7ce16aae043..1906bd99d8fe 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,15 +21,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -41,7 +40,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -49,16 +48,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -73,7 +72,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs index b873d5323e7a..2d668528ef65 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj index a5902dc67f8f..55e4b3391c27 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -23,10 +23,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs index 610a3704b124..adaf287f4aa7 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -12,7 +12,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -221,10 +223,10 @@ public async Task NowGetAsync(System.Threading.CancellationT "application/json" }; - string? acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = HttpMethod.Get; diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs index f7cda3e72ce2..a7b1ca134e4c 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,10 +7,10 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -33,6 +33,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage? RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -40,13 +45,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string? reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage? rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs index e64afdb6bee7..344e2255924b 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -52,6 +52,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -109,6 +114,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -147,6 +157,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -170,6 +181,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -181,6 +193,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs index 7f26eb170ddc..1d7bad8c4918 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -19,6 +19,7 @@ using System.Text.RegularExpressions; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -220,6 +221,26 @@ public static byte[] ReadAsBytes(Stream inputStream) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return [MediaTypeWithQualityHeaderValue.Parse("application/json")]; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index ec5c9f28e943..dd1ee701bb69 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,32 +21,32 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new(); + public Dictionary> AvailableTokens { get; } = new(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { token.TokenBecameAvailable += ((sender) => availableToken.Value.Writer.TryWrite((TTokenBase)sender)); } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel? tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs index 3f713a2ef4bb..aa6df45cf7c0 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenBase.cs @@ -17,8 +17,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler? TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler? TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs index d9c84d5cc775..36ae5069699f 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - #nullable enable using System; @@ -22,23 +21,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 7653c5c71536..a605cca9f6b9 100644 --- a/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/net9/UseDateTimeForDate/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,10 +22,13 @@ - - - - + + + + + + + diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 169b9470ad4b..389fd63ab339 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -291,10 +293,10 @@ public async Task Call123TestSpecialTagsAsyn "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs index 5ca198780cd7..d3e371440177 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -526,10 +528,10 @@ public async Task FooGetAsync(System.Threading.CancellationT "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -962,10 +964,10 @@ public async Task HelloAsync(System.Threading.CancellationTok "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1179,10 +1181,10 @@ public async Task RedirectOrDefaultAsync(System.T "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1402,10 +1404,10 @@ public async Task RolesReportGetAsync(System.Threadi "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1619,10 +1621,10 @@ public async Task TestAsync(System.Threading.CancellationToken "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs index dbfc7ba00f4c..7110fb455c32 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1376,10 +1378,10 @@ public async Task FakeHealthGetAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1617,10 +1619,10 @@ public async Task FakeOuterBooleanSeriali "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1871,10 +1873,10 @@ public async Task FakeOuterCompositeSer "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2112,10 +2114,10 @@ public async Task FakeOuterNumberSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2378,10 +2380,10 @@ public async Task FakeOuterStringSerialize "*/*" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2595,10 +2597,10 @@ public async Task GetArrayOfEnumsAsync(System.Threa "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2812,10 +2814,10 @@ public async Task GetMixedAnyOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3029,10 +3031,10 @@ public async Task GetMixedOneOfAsync(System.Threading "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -3937,10 +3939,10 @@ public async Task TestClientModelAsync(ModelClient "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 7c4fa9b1483e..1fcd03e08daf 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -300,10 +302,10 @@ public async Task TestClassnameAsync(ModelClient mode "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("PATCH"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/PetApi.cs index 18f2ab3e6509..de479ed63dfb 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/PetApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1259,10 +1261,10 @@ public async Task FindPetsByStatusAsync(List acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1559,10 +1561,10 @@ public async Task FindPetsByTagsAsync(List t "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1811,10 +1813,10 @@ public async Task GetPetByIdAsync(long petId, System.Thr "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2606,10 +2608,10 @@ public async Task UploadFileAsync(long petId, Option acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -2895,10 +2897,10 @@ public async Task UploadFileWithRequired "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs index cb016f72f98c..a10d2f6a10e3 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/StoreApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -653,10 +655,10 @@ public async Task GetInventoryAsync(System.Threading.C "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -886,10 +888,10 @@ public async Task GetOrderByIdAsync(long orderId, Syst "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1152,10 +1154,10 @@ public async Task PlaceOrderAsync(Order order, System.Th "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("POST"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/UserApi.cs index 6e0a6dc77415..69c6ea454abe 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Api/UserApi.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Net; +using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using System.Net.Http; @@ -1554,10 +1556,10 @@ public async Task GetUserByNameAsync(string username, "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; @@ -1868,10 +1870,10 @@ public async Task LoginUserAsync(string password, string "application/json" }; - string acceptLocalVar = ClientUtils.SelectHeaderAccept(acceptLocalVars); + IEnumerable acceptHeaderValuesLocalVar = ClientUtils.SelectHeaderAcceptArray(acceptLocalVars); - if (acceptLocalVar != null) - httpRequestMessageLocalVar.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptLocalVar)); + foreach (var acceptLocalVar in acceptHeaderValuesLocalVar) + httpRequestMessageLocalVar.Headers.Accept.Add(acceptLocalVar); httpRequestMessageLocalVar.Method = new HttpMethod("GET"); DateTime requestedAtLocalVar = DateTime.UtcNow; diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiException.cs index fdd11dd19c9a..fb35f4edfd97 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiException.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiException.cs @@ -7,8 +7,8 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; +using System.IO; namespace Org.OpenAPITools.Client { @@ -31,6 +31,11 @@ public class ApiException : Exception /// The raw data returned by the api /// public string RawContent { get; } + + /// + /// The HttpResponseMessage object + /// + public System.Net.Http.HttpResponseMessage RawResponse { get; } /// /// Construct the ApiException from parts of the response @@ -38,13 +43,15 @@ public class ApiException : Exception /// /// /// - public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent) : base(reasonPhrase ?? rawContent) + public ApiException(string reasonPhrase, System.Net.HttpStatusCode statusCode, string rawContent, System.Net.Http.HttpResponseMessage rawResponse = null) : base(reasonPhrase ?? rawContent) { ReasonPhrase = reasonPhrase; StatusCode = statusCode; RawContent = rawContent; + + RawResponse = rawResponse; } } } diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 918f5ba89d32..f6a1ddbe6b26 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -49,6 +49,11 @@ public partial interface IApiResponse /// System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The path used when making the request. /// @@ -106,6 +111,11 @@ public partial class ApiResponse : IApiResponse /// public System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// + /// The headers contained in the api response related to the content + /// + public System.Net.Http.Headers.HttpContentHeaders ContentHeaders { get; } + /// /// The DateTime when the request was retrieved. /// @@ -144,6 +154,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; RawContent = rawContent; @@ -167,6 +178,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage { StatusCode = httpResponseMessage.StatusCode; Headers = httpResponseMessage.Headers; + ContentHeaders = httpResponseMessage.Content.Headers; IsSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode; ReasonPhrase = httpResponseMessage.ReasonPhrase; ContentStream = contentStream; @@ -178,6 +190,7 @@ public ApiResponse(global::System.Net.Http.HttpRequestMessage httpRequestMessage OnCreated(httpRequestMessage, httpResponseMessage); } + partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); } diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs index 382636b9c592..939401e358ae 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -18,6 +18,7 @@ using KellermanSoftware.CompareNetObjects; using Org.OpenAPITools.Model; using System.Runtime.CompilerServices; +using System.Net.Http.Headers; [assembly: InternalsVisibleTo("Org.OpenAPITools.Test")] @@ -335,6 +336,26 @@ public static string SelectHeaderAccept(string[] accepts) return string.Join(",", accepts); } + + + /// + /// 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. + /// + /// The accepts array to select from. + /// The Accept header values to use. + public static IEnumerable SelectHeaderAcceptArray(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return new [] { MediaTypeWithQualityHeaderValue.Parse("application/json") }; + + return accepts.Select(MediaTypeWithQualityHeaderValue.Parse); + } + /// /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. /// diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs index 36e3def7fcd2..56d245063001 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Collections.Generic; using System.Linq; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// public class RateLimitProvider : TokenProvider where TTokenBase : TokenBase { - internal Dictionary> AvailableTokens { get; } = new Dictionary>(); + public Dictionary> AvailableTokens { get; } = new Dictionary>(); /// /// Instantiates a ThrottledTokenProvider. Your tokens will be rate limited based on the token's timeout. /// /// - public RateLimitProvider(TokenContainer container) : base(container.Tokens) + public RateLimitProvider(TokenContainer container) : base() { - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) token.StartTimer(token.Timeout ?? TimeSpan.FromMilliseconds(40)); if (container is TokenContainer apiKeyTokenContainer) @@ -39,7 +38,7 @@ public RateLimitProvider(TokenContainer container) : base(container. { global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(apiKeyTokenContainer.Tokens.Count(t => ClientUtils.ApiKeyHeaderToString(t.Header).Equals(header))) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(header, global::System.Threading.Channels.Channel.CreateBounded(options)); @@ -47,16 +46,16 @@ public RateLimitProvider(TokenContainer container) : base(container. } else { - global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(_tokens.Length) + global::System.Threading.Channels.BoundedChannelOptions options = new global::System.Threading.Channels.BoundedChannelOptions(container.Tokens.Count) { - FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropWrite + FullMode = global::System.Threading.Channels.BoundedChannelFullMode.DropOldest }; AvailableTokens.Add(string.Empty, global::System.Threading.Channels.Channel.CreateBounded(options)); } foreach (var availableToken in AvailableTokens) - foreach(TTokenBase token in _tokens) + foreach(TTokenBase token in container.Tokens) { if (token is ApiKeyToken apiKeyToken) { @@ -71,7 +70,7 @@ public RateLimitProvider(TokenContainer container) : base(container. } } - internal override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) + public override async System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default) { if (!AvailableTokens.TryGetValue(header, out global::System.Threading.Channels.Channel tokens)) throw new KeyNotFoundException($"Could not locate a token for header '{header}'."); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs index ec843104cafe..11cddf564b33 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenBase.cs @@ -15,8 +15,8 @@ public abstract class TokenBase internal TimeSpan? Timeout { get; set; } - internal delegate void TokenBecameAvailableEventHandler(object sender); - internal event TokenBecameAvailableEventHandler TokenBecameAvailable; + public delegate void TokenBecameAvailableEventHandler(object sender); + public event TokenBecameAvailableEventHandler TokenBecameAvailable; /// diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs index 36d7dad03e23..1a9a30116ee5 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/TokenProvider`1.cs @@ -7,7 +7,6 @@ * The version of the OpenAPI document: 1.0.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ - using System; using System.Linq; using System.Collections.Generic; @@ -20,23 +19,6 @@ namespace Org.OpenAPITools /// public abstract class TokenProvider where TTokenBase : TokenBase { - /// - /// The array of tokens. - /// - protected TTokenBase[] _tokens; - - internal abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); - - /// - /// Instantiates a TokenProvider. - /// - /// - public TokenProvider(IEnumerable tokens) - { - _tokens = tokens.ToArray(); - - if (_tokens.Length == 0) - throw new ArgumentException("You did not provide any tokens."); - } + public abstract System.Threading.Tasks.ValueTask GetAsync(string header = "", System.Threading.CancellationToken cancellation = default); } } \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj index f50496337d10..400522301d58 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -22,9 +22,11 @@ - - - + + + + +