// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschränkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; using NJsonSchema; using NJsonSchema.Generation.TypeMappers; using NodaTime; using NSwag.SwaggerGeneration; using NSwag.SwaggerGeneration.Processors; using Squidex.Areas.Api.Controllers.Contents.Generator; using Squidex.Areas.Api.Controllers.Rules.Models; using Squidex.Domain.Apps.Core.Contents; using Squidex.Infrastructure; namespace Squidex.Areas.Api.Config.Swagger { public static class SwaggerServices { public static void AddMySwaggerSettings(this IServiceCollection services) { services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddOpenApiDocument(settings => { settings.ConfigureName(); settings.ConfigureSchemaSettings(); settings.OperationProcessors.Add(new ODataQueryParamsProcessor("/apps/{app}/assets", "assets", false)); }); services.AddTransient(); } public static void ConfigureName(this T settings) where T : SwaggerGeneratorSettings { settings.Title = "Squidex API"; } public static void ConfigureSchemaSettings(this T settings) where T : SwaggerGeneratorSettings { settings.TypeMappers = new List { new PrimitiveTypeMapper(typeof(Instant), schema => { schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.DateTime; }), new PrimitiveTypeMapper(typeof(Language), s => s.Type = JsonObjectType.String), new PrimitiveTypeMapper(typeof(RefToken), s => s.Type = JsonObjectType.String), new PrimitiveTypeMapper(typeof(Status), s => s.Type = JsonObjectType.String), }; } } }