/// <summary> /// Configures swagger to use NodaTime types. /// Uses System.Text.Json for serialization aspects. /// </summary> /// <param name="config">SwaggerGenOptions.</param> /// <param name="jsonSerializerOptions">Optional serializer options.</param> /// <param name="configureSerializerOptions">Optional action to configure jsonSerializerOptions.</param> /// <param name="dateTimeZoneProvider">Optional DateTimeZoneProviders.</param> /// <param name="shouldGenerateExamples">Should generate example for schema.</param> /// <param name="schemaExamples"><see cref="SchemaExamples"/> for schema example values.</param> public static void ConfigureForNodaTimeWithSystemTextJson( this SwaggerGenOptions config, JsonSerializerOptions?jsonSerializerOptions = null, Action <JsonSerializerOptions>?configureSerializerOptions = null, IDateTimeZoneProvider?dateTimeZoneProvider = null, bool shouldGenerateExamples = true, SchemaExamples?schemaExamples = null) { if (config == null) { throw new ArgumentNullException(nameof(config)); } jsonSerializerOptions ??= new JsonSerializerOptions(); configureSerializerOptions?.Invoke(jsonSerializerOptions); global::NodaTime.Serialization.SystemTextJson.Extensions.ConfigureForNodaTime(jsonSerializerOptions, dateTimeZoneProvider ?? DateTimeZoneProviders.Tzdb); var nodaTimeSchemaSettings = jsonSerializerOptions.CreateNodaTimeSchemaSettingsForSystemTextJson( dateTimeZoneProvider: dateTimeZoneProvider, shouldGenerateExamples: shouldGenerateExamples, schemaExamples: schemaExamples); config.ConfigureForNodaTime(nodaTimeSchemaSettings); }
/// <summary> /// Configures swagger to use NodaTime types. /// Uses NewtonsoftJson for serialization aspects. /// </summary> /// <param name="config">SwaggerGenOptions.</param> /// <param name="serializerSettings">Optional serializer settings.</param> /// <param name="configureSerializerSettings">Optional action to configure serializerSettings.</param> /// <param name="dateTimeZoneProvider">Optional DateTimeZoneProviders.</param> /// <param name="shouldGenerateExamples">Should generate example for schema.</param> /// <param name="schemaExamples"><see cref="SchemaExamples"/> for schema example values.</param> public static void ConfigureForNodaTime( this SwaggerGenOptions config, JsonSerializerSettings?serializerSettings = null, Action <JsonSerializerSettings>?configureSerializerSettings = null, IDateTimeZoneProvider?dateTimeZoneProvider = null, bool shouldGenerateExamples = true, SchemaExamples?schemaExamples = null) { if (config == null) { throw new ArgumentNullException(nameof(config)); } serializerSettings ??= new JsonSerializerSettings(); configureSerializerSettings?.Invoke(serializerSettings); bool isNodaConvertersRegistered = serializerSettings.Converters.Any(converter => converter is NodaConverterBase <Instant>); if (!isNodaConvertersRegistered) { serializerSettings.ConfigureForNodaTime(dateTimeZoneProvider ?? DateTimeZoneProviders.Tzdb); } var nodaTimeSchemaSettings = serializerSettings.CreateNodaTimeSchemaSettingsForNewtonsoftJson( dateTimeZoneProvider: dateTimeZoneProvider, shouldGenerateExamples: shouldGenerateExamples, schemaExamples: schemaExamples); config.ConfigureForNodaTime(nodaTimeSchemaSettings); }
/// <summary> /// Configures swagger to use NodaTime types. /// </summary> /// <param name="config">Options to configure swagger.</param> /// <param name="initJsonSettings">Action to initialize jsonSettings.</param> public static void ConfigureForNodaTime(this SwaggerGenOptions config, Action <JsonSerializerSettings> initJsonSettings) { var serializerSettings = new JsonSerializerSettings(); initJsonSettings(serializerSettings); config.ConfigureForNodaTime(serializerSettings); }
/// <summary> /// Configures swagger to use NodaTime types. /// Uses System.Text.Json for serialization aspects. /// </summary> /// <param name="config">SwaggerGenOptions.</param> /// <param name="jsonSerializerOptions">Optional serializer options.</param> /// /// <param name="shouldGenerateExamples">Optional if we should generate examples</param> /// <param name="configureSerializerOptions">Optional action to configure jsonSerializerOptions.</param> /// <param name="dateTimeZoneProvider">Optional DateTimeZoneProviders.</param> public static void ConfigureForNodaTimeWithSystemTextJson( this SwaggerGenOptions config, JsonSerializerOptions jsonSerializerOptions = null, bool shouldGenerateExamples = true, Action <JsonSerializerOptions> configureSerializerOptions = null, IDateTimeZoneProvider dateTimeZoneProvider = null) { jsonSerializerOptions = jsonSerializerOptions ?? new JsonSerializerOptions(); configureSerializerOptions?.Invoke(jsonSerializerOptions); global::NodaTime.Serialization.SystemTextJson.Extensions.ConfigureForNodaTime(jsonSerializerOptions, dateTimeZoneProvider ?? DateTimeZoneProviders.Tzdb); var nodaTimeSchemaSettings = jsonSerializerOptions.CreateNodaTimeSchemaSettingsForSystemTextJson(shouldGenerateExamples); config.ConfigureForNodaTime(nodaTimeSchemaSettings); }
/// <summary> /// Configures swagger to use NodaTime types. /// Uses NewtonsoftJson for serialization aspects. /// </summary> /// <param name="config">SwaggerGenOptions.</param> /// <param name="serializerSettings">Optional serializer settings.</param> /// <param name="shouldGenerateExamples">Optional if we should generate examples</param> /// <param name="configureSerializerSettings">Optional action to configure serializerSettings.</param> /// <param name="dateTimeZoneProvider">Optional DateTimeZoneProviders.</param> public static void ConfigureForNodaTime( this SwaggerGenOptions config, JsonSerializerSettings serializerSettings = null, bool shouldGenerateExamples = true, Action <JsonSerializerSettings> configureSerializerSettings = null, IDateTimeZoneProvider dateTimeZoneProvider = null) { serializerSettings = serializerSettings ?? new JsonSerializerSettings(); configureSerializerSettings?.Invoke(serializerSettings); bool isNodaConvertersRegistered = serializerSettings.Converters.Any(converter => converter is NodaConverterBase <Instant>); if (!isNodaConvertersRegistered) { serializerSettings.ConfigureForNodaTime(dateTimeZoneProvider ?? DateTimeZoneProviders.Tzdb); } var nodaTimeSchemaSettings = serializerSettings.CreateNodaTimeSchemaSettingsForNewtonsoftJson(shouldGenerateExamples); config.ConfigureForNodaTime(nodaTimeSchemaSettings); }