From 5c7a82824b684a7f0e292fbfa73f9e0965360cfd Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sat, 8 Dec 2018 18:12:26 +0100 Subject: [PATCH] Schema improvements. --- .../Areas/Api/Config/Swagger/FixProcessor.cs | 33 +++++++++++++++++++ .../Api/Config/Swagger/SwaggerServices.cs | 3 ++ .../Config/Swagger/TagByGroupNameProcessor.cs | 8 +++-- .../Contents/ContentSwaggerController.cs | 1 - .../Contents/ContentsController.cs | 5 +-- .../Api/Controllers/Docs/DocsController.cs | 1 - .../EventConsumersController.cs | 1 - .../Controllers/Rules/TwitterController.cs | 7 ++-- .../Users/UserManagementController.cs | 1 - .../Controllers/Account/AccountController.cs | 1 - .../Controllers/IdentityServerController.cs | 1 - .../Controllers/Profile/ProfileController.cs | 1 - src/Squidex/Squidex.csproj | 17 ++++++---- 13 files changed, 58 insertions(+), 22 deletions(-) create mode 100644 src/Squidex/Areas/Api/Config/Swagger/FixProcessor.cs diff --git a/src/Squidex/Areas/Api/Config/Swagger/FixProcessor.cs b/src/Squidex/Areas/Api/Config/Swagger/FixProcessor.cs new file mode 100644 index 000000000..83106901f --- /dev/null +++ b/src/Squidex/Areas/Api/Config/Swagger/FixProcessor.cs @@ -0,0 +1,33 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Threading.Tasks; +using NJsonSchema; +using NSwag.SwaggerGeneration.Processors; +using NSwag.SwaggerGeneration.Processors.Contexts; +using Squidex.Infrastructure.Tasks; + +namespace Squidex.Areas.Api.Config.Swagger +{ + public class FixProcessor : IOperationProcessor + { + private static readonly JsonSchema4 StringSchema = new JsonSchema4 { Type = JsonObjectType.String }; + + public Task ProcessAsync(OperationProcessorContext context) + { + foreach (var parameter in context.Parameters.Values) + { + if (parameter.IsRequired && parameter.Schema != null && parameter.Schema.Type == JsonObjectType.String) + { + parameter.Schema = StringSchema; + } + } + + return TaskHelper.True; + } + } +} diff --git a/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs b/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs index eb52fc77f..5059cb21c 100644 --- a/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs +++ b/src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs @@ -38,6 +38,9 @@ namespace Squidex.Areas.Api.Config.Swagger services.AddSingletonAs() .As(); + services.AddSingletonAs() + .As(); + services.AddSingletonAs() .As(); diff --git a/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs b/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs index c1cc69ef6..9639f49a6 100644 --- a/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs +++ b/src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs @@ -24,9 +24,13 @@ namespace Squidex.Areas.Api.Config.Swagger if (!string.IsNullOrWhiteSpace(groupName)) { context.OperationDescription.Operation.Tags = new List { groupName }; - } - return TaskHelper.True; + return TaskHelper.True; + } + else + { + return TaskHelper.False; + } } } } diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentSwaggerController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentSwaggerController.cs index 26f2800c4..aaf2aadf3 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/ContentSwaggerController.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentSwaggerController.cs @@ -15,7 +15,6 @@ using Squidex.Pipeline; namespace Squidex.Areas.Api.Controllers.Contents { - [ApiExplorerSettings(IgnoreApi = true)] public sealed class ContentSwaggerController : ApiController { private readonly IAppProvider appProvider; diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs index 727067b2a..d78574d08 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs @@ -25,6 +25,7 @@ using Squidex.Shared; namespace Squidex.Areas.Api.Controllers.Contents { + [ApiExplorerSettings(GroupName = nameof(Contents))] public sealed class ContentsController : ApiController { private readonly IOptions controllerOptions; @@ -180,7 +181,7 @@ namespace Squidex.Areas.Api.Controllers.Contents } /// - /// Get a content item with a specific version. + /// Get a content by version. /// /// The name of the app. /// The name of the schema. @@ -435,7 +436,7 @@ namespace Squidex.Areas.Api.Controllers.Contents } /// - /// Discard changes of a content item. + /// Discard changes. /// /// The name of the app. /// The name of the schema. diff --git a/src/Squidex/Areas/Api/Controllers/Docs/DocsController.cs b/src/Squidex/Areas/Api/Controllers/Docs/DocsController.cs index 8c1ac3dea..0feb14f90 100644 --- a/src/Squidex/Areas/Api/Controllers/Docs/DocsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Docs/DocsController.cs @@ -10,7 +10,6 @@ using Squidex.Infrastructure.Commands; namespace Squidex.Areas.Api.Controllers.Docs { - [ApiExplorerSettings(IgnoreApi = true)] public sealed class DocsController : ApiController { public DocsController(ICommandBus commandBus) diff --git a/src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs b/src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs index a17767cb4..f8a2c9d0d 100644 --- a/src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs +++ b/src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs @@ -18,7 +18,6 @@ using Squidex.Shared; namespace Squidex.Areas.Api.Controllers.EventConsumers { - [ApiExplorerSettings(IgnoreApi = true)] public sealed class EventConsumersController : ApiController { private readonly IGrainFactory grainFactory; diff --git a/src/Squidex/Areas/Api/Controllers/Rules/TwitterController.cs b/src/Squidex/Areas/Api/Controllers/Rules/TwitterController.cs index 15119abad..54e9e1566 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/TwitterController.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/TwitterController.cs @@ -6,14 +6,13 @@ // ========================================================================== using System.Threading.Tasks; +using CoreTweet; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Squidex.Extensions.Actions.Twitter; -using static CoreTweet.OAuth; namespace Squidex.Areas.Api.Controllers.Rules { - [ApiExplorerSettings(IgnoreApi = true)] public sealed class TwitterController : Controller { private readonly TwitterOptions twitterOptions; @@ -36,7 +35,7 @@ namespace Squidex.Areas.Api.Controllers.Rules [Route("rules/twitter/auth")] public async Task Auth() { - var session = await AuthorizeAsync(twitterOptions.ClientId, twitterOptions.ClientSecret); + var session = await OAuth.AuthorizeAsync(twitterOptions.ClientId, twitterOptions.ClientSecret); return Ok(new { @@ -50,7 +49,7 @@ namespace Squidex.Areas.Api.Controllers.Rules [Route("rules/twitter/token")] public async Task AuthComplete([FromBody] TokenRequest request) { - var session = new OAuthSession + var session = new OAuth.OAuthSession { ConsumerKey = twitterOptions.ClientId, ConsumerSecret = twitterOptions.ClientSecret, diff --git a/src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs b/src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs index 908907a6d..ef7e8cb65 100644 --- a/src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs +++ b/src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs @@ -21,7 +21,6 @@ using Squidex.Shared; namespace Squidex.Areas.Api.Controllers.Users { [ApiModelValidation(true)] - [ApiExplorerSettings(IgnoreApi = true)] public sealed class UserManagementController : ApiController { private readonly UserManager userManager; diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs index 9b5d817c0..890ebefab 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs @@ -29,7 +29,6 @@ using Squidex.Shared.Users; namespace Squidex.Areas.IdentityServer.Controllers.Account { - [ApiExplorerSettings(IgnoreApi = true)] public sealed class AccountController : IdentityServerController { private readonly SignInManager signInManager; diff --git a/src/Squidex/Areas/IdentityServer/Controllers/IdentityServerController.cs b/src/Squidex/Areas/IdentityServer/Controllers/IdentityServerController.cs index fccc7a693..ad714b986 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/IdentityServerController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/IdentityServerController.cs @@ -11,7 +11,6 @@ using Microsoft.AspNetCore.Mvc.Filters; namespace Squidex.Areas.IdentityServer.Controllers { [Area("IdentityServer")] - [ApiExplorerSettings(IgnoreApi = true)] public abstract class IdentityServerController : Controller { public override void OnActionExecuting(ActionExecutingContext context) diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs index 665525e4d..c727806c6 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs @@ -26,7 +26,6 @@ using Squidex.Shared.Users; namespace Squidex.Areas.IdentityServer.Controllers.Profile { [Authorize] - [ApiExplorerSettings(IgnoreApi = true)] public sealed class ProfileController : IdentityServerController { private readonly SignInManager signInManager; diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index dfa9e520c..0b4ab06f8 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -1,13 +1,8 @@  - true - true - $(NoWarn);CS1591;1591;1573;1572;NU1605 - Squidex + InProcess true - netcoreapp2.2 - 2.1.1 - Latest + netcoreapp2.2 Latest true @@ -100,6 +95,10 @@ + + + true + ..\..\Squidex.ruleset @@ -108,4 +107,8 @@ + + + $(NoWarn);CS1591;1591;1573;1572;NU1605 + \ No newline at end of file