Browse Source

Schema improvements.

pull/336/head
Sebastian Stehle 8 years ago
parent
commit
5c7a82824b
  1. 33
      src/Squidex/Areas/Api/Config/Swagger/FixProcessor.cs
  2. 3
      src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs
  3. 8
      src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs
  4. 1
      src/Squidex/Areas/Api/Controllers/Contents/ContentSwaggerController.cs
  5. 5
      src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
  6. 1
      src/Squidex/Areas/Api/Controllers/Docs/DocsController.cs
  7. 1
      src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs
  8. 7
      src/Squidex/Areas/Api/Controllers/Rules/TwitterController.cs
  9. 1
      src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs
  10. 1
      src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs
  11. 1
      src/Squidex/Areas/IdentityServer/Controllers/IdentityServerController.cs
  12. 1
      src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs
  13. 17
      src/Squidex/Squidex.csproj

33
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<bool> 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;
}
}
}

3
src/Squidex/Areas/Api/Config/Swagger/SwaggerServices.cs

@ -38,6 +38,9 @@ namespace Squidex.Areas.Api.Config.Swagger
services.AddSingletonAs<ScopesProcessor>() services.AddSingletonAs<ScopesProcessor>()
.As<IOperationProcessor>(); .As<IOperationProcessor>();
services.AddSingletonAs<FixProcessor>()
.As<IOperationProcessor>();
services.AddSingletonAs<TagByGroupNameProcessor>() services.AddSingletonAs<TagByGroupNameProcessor>()
.As<IOperationProcessor>(); .As<IOperationProcessor>();

8
src/Squidex/Areas/Api/Config/Swagger/TagByGroupNameProcessor.cs

@ -24,9 +24,13 @@ namespace Squidex.Areas.Api.Config.Swagger
if (!string.IsNullOrWhiteSpace(groupName)) if (!string.IsNullOrWhiteSpace(groupName))
{ {
context.OperationDescription.Operation.Tags = new List<string> { groupName }; context.OperationDescription.Operation.Tags = new List<string> { groupName };
}
return TaskHelper.True; return TaskHelper.True;
}
else
{
return TaskHelper.False;
}
} }
} }
} }

1
src/Squidex/Areas/Api/Controllers/Contents/ContentSwaggerController.cs

@ -15,7 +15,6 @@ using Squidex.Pipeline;
namespace Squidex.Areas.Api.Controllers.Contents namespace Squidex.Areas.Api.Controllers.Contents
{ {
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class ContentSwaggerController : ApiController public sealed class ContentSwaggerController : ApiController
{ {
private readonly IAppProvider appProvider; private readonly IAppProvider appProvider;

5
src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs

@ -25,6 +25,7 @@ using Squidex.Shared;
namespace Squidex.Areas.Api.Controllers.Contents namespace Squidex.Areas.Api.Controllers.Contents
{ {
[ApiExplorerSettings(GroupName = nameof(Contents))]
public sealed class ContentsController : ApiController public sealed class ContentsController : ApiController
{ {
private readonly IOptions<MyContentsControllerOptions> controllerOptions; private readonly IOptions<MyContentsControllerOptions> controllerOptions;
@ -180,7 +181,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
} }
/// <summary> /// <summary>
/// Get a content item with a specific version. /// Get a content by version.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="name">The name of the schema.</param> /// <param name="name">The name of the schema.</param>
@ -435,7 +436,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
} }
/// <summary> /// <summary>
/// Discard changes of a content item. /// Discard changes.
/// </summary> /// </summary>
/// <param name="app">The name of the app.</param> /// <param name="app">The name of the app.</param>
/// <param name="name">The name of the schema.</param> /// <param name="name">The name of the schema.</param>

1
src/Squidex/Areas/Api/Controllers/Docs/DocsController.cs

@ -10,7 +10,6 @@ using Squidex.Infrastructure.Commands;
namespace Squidex.Areas.Api.Controllers.Docs namespace Squidex.Areas.Api.Controllers.Docs
{ {
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class DocsController : ApiController public sealed class DocsController : ApiController
{ {
public DocsController(ICommandBus commandBus) public DocsController(ICommandBus commandBus)

1
src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs

@ -18,7 +18,6 @@ using Squidex.Shared;
namespace Squidex.Areas.Api.Controllers.EventConsumers namespace Squidex.Areas.Api.Controllers.EventConsumers
{ {
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class EventConsumersController : ApiController public sealed class EventConsumersController : ApiController
{ {
private readonly IGrainFactory grainFactory; private readonly IGrainFactory grainFactory;

7
src/Squidex/Areas/Api/Controllers/Rules/TwitterController.cs

@ -6,14 +6,13 @@
// ========================================================================== // ==========================================================================
using System.Threading.Tasks; using System.Threading.Tasks;
using CoreTweet;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Squidex.Extensions.Actions.Twitter; using Squidex.Extensions.Actions.Twitter;
using static CoreTweet.OAuth;
namespace Squidex.Areas.Api.Controllers.Rules namespace Squidex.Areas.Api.Controllers.Rules
{ {
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class TwitterController : Controller public sealed class TwitterController : Controller
{ {
private readonly TwitterOptions twitterOptions; private readonly TwitterOptions twitterOptions;
@ -36,7 +35,7 @@ namespace Squidex.Areas.Api.Controllers.Rules
[Route("rules/twitter/auth")] [Route("rules/twitter/auth")]
public async Task<IActionResult> Auth() public async Task<IActionResult> Auth()
{ {
var session = await AuthorizeAsync(twitterOptions.ClientId, twitterOptions.ClientSecret); var session = await OAuth.AuthorizeAsync(twitterOptions.ClientId, twitterOptions.ClientSecret);
return Ok(new return Ok(new
{ {
@ -50,7 +49,7 @@ namespace Squidex.Areas.Api.Controllers.Rules
[Route("rules/twitter/token")] [Route("rules/twitter/token")]
public async Task<IActionResult> AuthComplete([FromBody] TokenRequest request) public async Task<IActionResult> AuthComplete([FromBody] TokenRequest request)
{ {
var session = new OAuthSession var session = new OAuth.OAuthSession
{ {
ConsumerKey = twitterOptions.ClientId, ConsumerKey = twitterOptions.ClientId,
ConsumerSecret = twitterOptions.ClientSecret, ConsumerSecret = twitterOptions.ClientSecret,

1
src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs

@ -21,7 +21,6 @@ using Squidex.Shared;
namespace Squidex.Areas.Api.Controllers.Users namespace Squidex.Areas.Api.Controllers.Users
{ {
[ApiModelValidation(true)] [ApiModelValidation(true)]
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class UserManagementController : ApiController public sealed class UserManagementController : ApiController
{ {
private readonly UserManager<IdentityUser> userManager; private readonly UserManager<IdentityUser> userManager;

1
src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs

@ -29,7 +29,6 @@ using Squidex.Shared.Users;
namespace Squidex.Areas.IdentityServer.Controllers.Account namespace Squidex.Areas.IdentityServer.Controllers.Account
{ {
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class AccountController : IdentityServerController public sealed class AccountController : IdentityServerController
{ {
private readonly SignInManager<IdentityUser> signInManager; private readonly SignInManager<IdentityUser> signInManager;

1
src/Squidex/Areas/IdentityServer/Controllers/IdentityServerController.cs

@ -11,7 +11,6 @@ using Microsoft.AspNetCore.Mvc.Filters;
namespace Squidex.Areas.IdentityServer.Controllers namespace Squidex.Areas.IdentityServer.Controllers
{ {
[Area("IdentityServer")] [Area("IdentityServer")]
[ApiExplorerSettings(IgnoreApi = true)]
public abstract class IdentityServerController : Controller public abstract class IdentityServerController : Controller
{ {
public override void OnActionExecuting(ActionExecutingContext context) public override void OnActionExecuting(ActionExecutingContext context)

1
src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs

@ -26,7 +26,6 @@ using Squidex.Shared.Users;
namespace Squidex.Areas.IdentityServer.Controllers.Profile namespace Squidex.Areas.IdentityServer.Controllers.Profile
{ {
[Authorize] [Authorize]
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class ProfileController : IdentityServerController public sealed class ProfileController : IdentityServerController
{ {
private readonly SignInManager<IdentityUser> signInManager; private readonly SignInManager<IdentityUser> signInManager;

17
src/Squidex/Squidex.csproj

@ -1,13 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<NoWarn>$(NoWarn);CS1591;1591;1573;1572;NU1605</NoWarn>
<PackageId>Squidex</PackageId>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
<TargetFramework>netcoreapp2.2</TargetFramework> <TargetFramework>netcoreapp2.2</TargetFramework> <TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
</PropertyGroup> </PropertyGroup>
@ -100,6 +95,10 @@
<ContentWithTargetPath Include="@(_DocumentationFile->'%(FullPath)')" RelativePath="%(_DocumentationFile.Identity)" TargetPath="%(_DocumentationFile.Filename)%(_DocumentationFile.Extension)" CopyToPublishDirectory="PreserveNewest" /> <ContentWithTargetPath Include="@(_DocumentationFile->'%(FullPath)')" RelativePath="%(_DocumentationFile.Identity)" TargetPath="%(_DocumentationFile.Filename)%(_DocumentationFile.Extension)" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup> </ItemGroup>
</Target> </Target>
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup> <PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
@ -108,4 +107,8 @@
<ItemGroup> <ItemGroup>
<AdditionalFiles Include="..\..\stylecop.json" Link="stylecop.json" /> <AdditionalFiles Include="..\..\stylecop.json" Link="stylecop.json" />
</ItemGroup> </ItemGroup>
<PropertyGroup>
<NoWarn>$(NoWarn);CS1591;1591;1573;1572;NU1605</NoWarn>
</PropertyGroup>
</Project> </Project>
Loading…
Cancel
Save