From ee16d7daefcb2f47b3ea4b87acdef34e598a1dce Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Thu, 15 Nov 2018 17:58:40 +0100 Subject: [PATCH] Use group name as tags. --- .../Api/Config/Swagger/SwaggerServices.cs | 1 + .../Config/Swagger/TagByGroupNameProcessor.cs | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs diff --git a/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs b/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs index 44e95ba0d..336025ee0 100644 --- a/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs +++ b/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs @@ -106,6 +106,7 @@ namespace Squidex.Areas.Api.Config.Swagger settings.GeneratorSettings.DocumentProcessors.Add(new RuleActionProcessor()); settings.GeneratorSettings.DocumentProcessors.Add(new XmlTagProcessor()); + settings.GeneratorSettings.OperationProcessors.Add(new TagByGroupNameProcessor()); settings.GeneratorSettings.OperationProcessors.Add(new XmlResponseTypesProcessor()); return settings; diff --git a/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs b/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs new file mode 100644 index 000000000..c1cc69ef6 --- /dev/null +++ b/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs @@ -0,0 +1,32 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Collections.Generic; +using System.Reflection; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using NSwag.SwaggerGeneration.Processors; +using NSwag.SwaggerGeneration.Processors.Contexts; +using Squidex.Infrastructure.Tasks; + +namespace Squidex.Areas.Api.Config.Swagger +{ + public sealed class TagByGroupNameProcessor : IOperationProcessor + { + public Task ProcessAsync(OperationProcessorContext context) + { + var groupName = context.ControllerType.GetCustomAttribute()?.GroupName; + + if (!string.IsNullOrWhiteSpace(groupName)) + { + context.OperationDescription.Operation.Tags = new List { groupName }; + } + + return TaskHelper.True; + } + } +}