コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }