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>()
.As<IOperationProcessor>();
services.AddSingletonAs<FixProcessor>()
.As<IOperationProcessor>();
services.AddSingletonAs<TagByGroupNameProcessor>()
.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))
{
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
{
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class ContentSwaggerController : ApiController
{
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
{
[ApiExplorerSettings(GroupName = nameof(Contents))]
public sealed class ContentsController : ApiController
{
private readonly IOptions<MyContentsControllerOptions> controllerOptions;
@ -180,7 +181,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
}
/// <summary>
/// Get a content item with a specific version.
/// Get a content by version.
/// </summary>
/// <param name="app">The name of the app.</param>
/// <param name="name">The name of the schema.</param>
@ -435,7 +436,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
}
/// <summary>
/// Discard changes of a content item.
/// Discard changes.
/// </summary>
/// <param name="app">The name of the app.</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
{
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class DocsController : ApiController
{
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
{
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class EventConsumersController : ApiController
{
private readonly IGrainFactory grainFactory;

7
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<IActionResult> 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<IActionResult> AuthComplete([FromBody] TokenRequest request)
{
var session = new OAuthSession
var session = new OAuth.OAuthSession
{
ConsumerKey = twitterOptions.ClientId,
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
{
[ApiModelValidation(true)]
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class UserManagementController : ApiController
{
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
{
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class AccountController : IdentityServerController
{
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
{
[Area("IdentityServer")]
[ApiExplorerSettings(IgnoreApi = true)]
public abstract class IdentityServerController : Controller
{
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
{
[Authorize]
[ApiExplorerSettings(IgnoreApi = true)]
public sealed class ProfileController : IdentityServerController
{
private readonly SignInManager<IdentityUser> signInManager;

17
src/Squidex/Squidex.csproj

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