Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,28 @@ private JsonSerializerOptions ResolveOptions()
JsonSerializerOptions serializerOptions;

/*
* First try to get the options configured for MVC,
* First try to get the options configured for MVC, but only when MVC is actually
* registered: IOptions<Mvc.JsonOptions> resolves in any application, so in a Minimal
* APIs application it hands back MVC's own defaults and hides whatever the application
* configured through ConfigureHttpJsonOptions,
* then try to get the options configured for Minimal APIs if available,
* then try the default JsonSerializerOptions if available,
* otherwise create a new instance as a last resort as this is an expensive operation.
*/
serializerOptions =
_serviceProvider.GetService<IOptions<AspNetCore.Mvc.JsonOptions>>()?.Value?.JsonSerializerOptions
(IsMvcRegistered() ? _serviceProvider.GetService<IOptions<AspNetCore.Mvc.JsonOptions>>()?.Value?.JsonSerializerOptions : null)
?? _serviceProvider.GetService<IOptions<AspNetCore.Http.Json.JsonOptions>>()?.Value?.SerializerOptions
?? JsonSerializerOptions.Default;

return serializerOptions;
}

/// <summary>
/// Whether the application registered MVC, through <c>AddControllers()</c>, <c>AddMvcCore()</c>
/// or <c>AddMvc()</c>. <c>IControllerFactory</c> is registered by all three, and by nothing a
/// Minimal APIs application uses, including <c>AddEndpointsApiExplorer()</c>.
/// </summary>
private bool IsMvcRegistered()
=> _serviceProvider.GetService<AspNetCore.Mvc.Controllers.IControllerFactory>() is not null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1213,12 +1213,11 @@
},
"DateTimeKind": {
"enum": [
0,
1,
2
"Unspecified",
"Utc",
"Local"
],
"type": "integer",
"format": "int32"
"type": "string"
},
"Fruit": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1213,12 +1213,11 @@
},
"DateTimeKind": {
"enum": [
0,
1,
2
"Unspecified",
"Utc",
"Local"
],
"type": "integer",
"format": "int32"
"type": "string"
},
"Fruit": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1101,12 +1101,11 @@
},
"DateTimeKind": {
"enum": [
0,
1,
2
"Unspecified",
"Utc",
"Local"
],
"type": "integer",
"format": "int32"
"type": "string"
},
"Fruit": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1101,12 +1101,11 @@
},
"DateTimeKind": {
"enum": [
0,
1,
2
"Unspecified",
"Utc",
"Local"
],
"type": "integer",
"format": "int32"
"type": "string"
},
"Fruit": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1101,12 +1101,11 @@
},
"DateTimeKind": {
"enum": [
0,
1,
2
"Unspecified",
"Utc",
"Local"
],
"type": "integer",
"format": "int32"
"type": "string"
},
"Fruit": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1101,12 +1101,11 @@
},
"DateTimeKind": {
"enum": [
0,
1,
2
"Unspecified",
"Utc",
"Local"
],
"type": "integer",
"format": "int32"
"type": "string"
},
"Fruit": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2118,9 +2118,11 @@ public partial class AsParametersRecord
public System.TimeSpan ParamEight { get; set; }

[Newtonsoft.Json.JsonProperty("paramNine", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public DateTimeKind ParamNine { get; set; }

[Newtonsoft.Json.JsonProperty("paramTen", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public DateTimeKind ParamTen { get; set; }

[Newtonsoft.Json.JsonProperty("paramEleven", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
Expand Down Expand Up @@ -2153,11 +2155,14 @@ public partial class CurrenciesRate
public enum DateTimeKind
{

_0 = 0,
[System.Runtime.Serialization.EnumMember(Value = @"Unspecified")]
Unspecified = 0,

_1 = 1,
[System.Runtime.Serialization.EnumMember(Value = @"Utc")]
Utc = 1,

_2 = 2,
[System.Runtime.Serialization.EnumMember(Value = @"Local")]
Local = 2,

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2118,9 +2118,11 @@ public partial class AsParametersRecord
public System.TimeSpan ParamEight { get; set; }

[Newtonsoft.Json.JsonProperty("paramNine", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public DateTimeKind ParamNine { get; set; }

[Newtonsoft.Json.JsonProperty("paramTen", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public DateTimeKind ParamTen { get; set; }

[Newtonsoft.Json.JsonProperty("paramEleven", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
Expand Down Expand Up @@ -2153,11 +2155,14 @@ public partial class CurrenciesRate
public enum DateTimeKind
{

_0 = 0,
[System.Runtime.Serialization.EnumMember(Value = @"Unspecified")]
Unspecified = 0,

_1 = 1,
[System.Runtime.Serialization.EnumMember(Value = @"Utc")]
Utc = 1,

_2 = 2,
[System.Runtime.Serialization.EnumMember(Value = @"Local")]
Local = 2,

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,23 @@ public partial class AsParametersRequestBuilderGetQueryParameters
[QueryParameter("paramFour")]
public DateTimeOffset? ParamFour { get; set; }
#pragma warning restore CS1591
[Obsolete("This property is deprecated, use ParamNineAsDateTimeKind instead")]
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
#pragma warning disable CS1591
[QueryParameter("paramNine")]
public string? ParamNine { get; set; }
#pragma warning restore CS1591
#nullable restore
#else
#pragma warning disable CS1591
[QueryParameter("paramNine")]
public string ParamNine { get; set; }
#pragma warning restore CS1591
#endif
#pragma warning disable CS1591
[QueryParameter("paramNine")]
public int? ParamNine { get; set; }
public global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject? ParamNineAsDateTimeKind { get; set; }
#pragma warning restore CS1591
/// <summary>Description</summary>
[QueryParameter("paramOne")]
Expand All @@ -109,9 +123,23 @@ public partial class AsParametersRequestBuilderGetQueryParameters
[QueryParameter("paramSix")]
public Date? ParamSix { get; set; }
#pragma warning restore CS1591
[Obsolete("This property is deprecated, use ParamTenAsDateTimeKind instead")]
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
#pragma warning disable CS1591
[QueryParameter("paramTen")]
public string? ParamTen { get; set; }
#pragma warning restore CS1591
#nullable restore
#else
#pragma warning disable CS1591
[QueryParameter("paramTen")]
public string ParamTen { get; set; }
#pragma warning restore CS1591
#endif
#pragma warning disable CS1591
[QueryParameter("paramTen")]
public int? ParamTen { get; set; }
public global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject? ParamTenAsDateTimeKind { get; set; }
#pragma warning restore CS1591
#pragma warning disable CS1591
[QueryParameter("paramThree")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ public partial class AsParametersRecord : IParsable
/// <summary>The paramFour property</summary>
public DateTimeOffset? ParamFour { get; set; }
/// <summary>The paramNine property</summary>
public int? ParamNine { get; set; }
public global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject? ParamNine { get; set; }
/// <summary>The paramOne property</summary>
public Guid? ParamOne { get; set; }
/// <summary>The paramSeven property</summary>
public Time? ParamSeven { get; set; }
/// <summary>The paramSix property</summary>
public Date? ParamSix { get; set; }
/// <summary>The paramTen property</summary>
public int? ParamTen { get; set; }
public global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject? ParamTen { get; set; }
/// <summary>The paramThree property</summary>
public DateTimeOffset? ParamThree { get; set; }
/// <summary>The paramTwelve property</summary>
Expand Down Expand Up @@ -59,11 +59,11 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
{ "paramEleven", n => { ParamEleven = n.GetDoubleValue(); } },
{ "paramFive", n => { ParamFive = n.GetDateValue(); } },
{ "paramFour", n => { ParamFour = n.GetDateTimeOffsetValue(); } },
{ "paramNine", n => { ParamNine = n.GetIntValue(); } },
{ "paramNine", n => { ParamNine = n.GetEnumValue<global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject>(); } },
{ "paramOne", n => { ParamOne = n.GetGuidValue(); } },
{ "paramSeven", n => { ParamSeven = n.GetTimeValue(); } },
{ "paramSix", n => { ParamSix = n.GetDateValue(); } },
{ "paramTen", n => { ParamTen = n.GetIntValue(); } },
{ "paramTen", n => { ParamTen = n.GetEnumValue<global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject>(); } },
{ "paramThree", n => { ParamThree = n.GetDateTimeOffsetValue(); } },
{ "paramTwelve", n => { ParamTwelve = n.GetDoubleValue(); } },
{ "paramTwo", n => { ParamTwo = n.GetGuidValue(); } },
Expand All @@ -80,11 +80,11 @@ public virtual void Serialize(ISerializationWriter writer)
writer.WriteDoubleValue("paramEleven", ParamEleven);
writer.WriteDateValue("paramFive", ParamFive);
writer.WriteDateTimeOffsetValue("paramFour", ParamFour);
writer.WriteIntValue("paramNine", ParamNine);
writer.WriteEnumValue<global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject>("paramNine", ParamNine);
writer.WriteGuidValue("paramOne", ParamOne);
writer.WriteTimeValue("paramSeven", ParamSeven);
writer.WriteDateValue("paramSix", ParamSix);
writer.WriteIntValue("paramTen", ParamTen);
writer.WriteEnumValue<global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject>("paramTen", ParamTen);
writer.WriteDateTimeOffsetValue("paramThree", ParamThree);
writer.WriteDoubleValue("paramTwelve", ParamTwelve);
writer.WriteGuidValue("paramTwo", ParamTwo);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// <auto-generated/>
using System.Runtime.Serialization;
using System;
namespace Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models
{
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
#pragma warning disable CS1591
public enum DateTimeKindObject
#pragma warning restore CS1591
{
[EnumMember(Value = "Unspecified")]
#pragma warning disable CS1591
Unspecified,
#pragma warning restore CS1591
[EnumMember(Value = "Utc")]
#pragma warning disable CS1591
Utc,
#pragma warning restore CS1591
[EnumMember(Value = "Local")]
#pragma warning disable CS1591
Local,
#pragma warning restore CS1591
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,23 @@ public partial class AsParametersRequestBuilderGetQueryParameters
[QueryParameter("paramFour")]
public DateTimeOffset? ParamFour { get; set; }
#pragma warning restore CS1591
[Obsolete("This property is deprecated, use ParamNineAsDateTimeKind instead")]
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
#pragma warning disable CS1591
[QueryParameter("paramNine")]
public string? ParamNine { get; set; }
#pragma warning restore CS1591
#nullable restore
#else
#pragma warning disable CS1591
[QueryParameter("paramNine")]
public string ParamNine { get; set; }
#pragma warning restore CS1591
#endif
#pragma warning disable CS1591
[QueryParameter("paramNine")]
public int? ParamNine { get; set; }
public global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject? ParamNineAsDateTimeKind { get; set; }
#pragma warning restore CS1591
/// <summary>Description</summary>
[QueryParameter("paramOne")]
Expand All @@ -109,9 +123,23 @@ public partial class AsParametersRequestBuilderGetQueryParameters
[QueryParameter("paramSix")]
public Date? ParamSix { get; set; }
#pragma warning restore CS1591
[Obsolete("This property is deprecated, use ParamTenAsDateTimeKind instead")]
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
#pragma warning disable CS1591
[QueryParameter("paramTen")]
public string? ParamTen { get; set; }
#pragma warning restore CS1591
#nullable restore
#else
#pragma warning disable CS1591
[QueryParameter("paramTen")]
public string ParamTen { get; set; }
#pragma warning restore CS1591
#endif
#pragma warning disable CS1591
[QueryParameter("paramTen")]
public int? ParamTen { get; set; }
public global::Swashbuckle.AspNetCore.IntegrationTests.KiotaTests.Models.DateTimeKindObject? ParamTenAsDateTimeKind { get; set; }
#pragma warning restore CS1591
#pragma warning disable CS1591
[QueryParameter("paramThree")]
Expand Down
Loading
Loading