Browse Source

Schema Version bumped.

pull/65/head
Sebastian Stehle 9 years ago
parent
commit
d2507de73e
  1. 4
      src/Squidex.Core/Squidex.Core.csproj
  2. 2
      src/Squidex.Events/Squidex.Events.csproj
  3. 2
      src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  4. 2
      src/Squidex.Read/Squidex.Read.csproj
  5. 2
      src/Squidex.Write/Squidex.Write.csproj
  6. 12
      src/Squidex/Config/Swagger/SwaggerServices.cs
  7. 2
      src/Squidex/Config/Swagger/SwaggerUsage.cs
  8. 13
      src/Squidex/Config/Swagger/XmlResponseTypesProcessor.cs
  9. 13
      src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs
  10. 4
      src/Squidex/Squidex.csproj

4
src/Squidex.Core/Squidex.Core.csproj

@ -13,8 +13,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="protobuf-net" Version="2.2.1" /> <PackageReference Include="protobuf-net" Version="2.2.1" />
<PackageReference Include="System.Collections.Immutable" Version="1.3.1" /> <PackageReference Include="System.Collections.Immutable" Version="1.3.1" />
<PackageReference Include="NodaTime" Version="2.0.2" /> <PackageReference Include="NodaTime" Version="2.0.3" />
<PackageReference Include="NJsonSchema" Version="8.33.6323.36213" /> <PackageReference Include="NJsonSchema" Version="9.1.11" />
<PackageReference Include="System.ValueTuple" Version="4.3.1" /> <PackageReference Include="System.ValueTuple" Version="4.3.1" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' "> <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">

2
src/Squidex.Events/Squidex.Events.csproj

@ -12,6 +12,6 @@
<ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" /> <ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NodaTime" Version="2.0.2" /> <PackageReference Include="NodaTime" Version="2.0.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -12,7 +12,7 @@
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="1.1.2" /> <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.2" /> <PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
<PackageReference Include="NodaTime" Version="2.0.2" /> <PackageReference Include="NodaTime" Version="2.0.3" />
<PackageReference Include="System.Linq" Version="4.3.0" /> <PackageReference Include="System.Linq" Version="4.3.0" />
<PackageReference Include="System.Reactive" Version="3.1.1" /> <PackageReference Include="System.Reactive" Version="3.1.1" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" /> <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />

2
src/Squidex.Read/Squidex.Read.csproj

@ -15,7 +15,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" /> <PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.2" /> <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.2" />
<PackageReference Include="NodaTime" Version="2.0.2" /> <PackageReference Include="NodaTime" Version="2.0.3" />
<PackageReference Include="System.Linq.Queryable" Version="4.3.0" /> <PackageReference Include="System.Linq.Queryable" Version="4.3.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
src/Squidex.Write/Squidex.Write.csproj

@ -14,6 +14,6 @@
<ProjectReference Include="..\Squidex.Read\Squidex.Read.csproj" /> <ProjectReference Include="..\Squidex.Read\Squidex.Read.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NodaTime" Version="2.0.2" /> <PackageReference Include="NodaTime" Version="2.0.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>

12
src/Squidex/Config/Swagger/SwaggerServices.cs

@ -24,12 +24,12 @@ namespace Squidex.Config.Swagger
{ {
public static void AddMySwaggerSettings(this IServiceCollection services) public static void AddMySwaggerSettings(this IServiceCollection services)
{ {
services.AddSingleton(typeof(SwaggerOwinSettings), s => services.AddSingleton(typeof(SwaggerSettings), s =>
{ {
var urlOptions = s.GetService<IOptions<MyUrlsOptions>>().Value; var urlOptions = s.GetService<IOptions<MyUrlsOptions>>().Value;
var settings = var settings =
new SwaggerOwinSettings { Title = "Squidex API Specification", IsAspNetCore = false } new SwaggerSettings { Title = "Squidex API Specification", IsAspNetCore = false }
.ConfigurePaths(urlOptions) .ConfigurePaths(urlOptions)
.ConfigureSchemaSettings() .ConfigureSchemaSettings()
.ConfigureIdentity(urlOptions); .ConfigureIdentity(urlOptions);
@ -40,7 +40,7 @@ namespace Squidex.Config.Swagger
services.AddTransient<SchemasSwaggerGenerator>(); services.AddTransient<SchemasSwaggerGenerator>();
} }
private static SwaggerOwinSettings ConfigureIdentity(this SwaggerOwinSettings settings, MyUrlsOptions urlOptions) private static SwaggerSettings ConfigureIdentity(this SwaggerSettings settings, MyUrlsOptions urlOptions)
{ {
settings.DocumentProcessors.Add( settings.DocumentProcessors.Add(
new SecurityDefinitionAppender(Constants.SecurityDefinition, SwaggerHelper.CreateOAuthSchema(urlOptions))); new SecurityDefinitionAppender(Constants.SecurityDefinition, SwaggerHelper.CreateOAuthSchema(urlOptions)));
@ -50,7 +50,7 @@ namespace Squidex.Config.Swagger
return settings; return settings;
} }
private static SwaggerOwinSettings ConfigurePaths(this SwaggerOwinSettings settings, MyUrlsOptions urlOptions) private static SwaggerSettings ConfigurePaths(this SwaggerSettings settings, MyUrlsOptions urlOptions)
{ {
settings.SwaggerRoute = $"{Constants.ApiPrefix}/swagger/v1/swagger.json"; settings.SwaggerRoute = $"{Constants.ApiPrefix}/swagger/v1/swagger.json";
@ -68,7 +68,7 @@ namespace Squidex.Config.Swagger
return settings; return settings;
} }
private static SwaggerOwinSettings ConfigureSchemaSettings(this SwaggerOwinSettings settings) private static SwaggerSettings ConfigureSchemaSettings(this SwaggerSettings settings)
{ {
settings.DefaultEnumHandling = EnumHandling.String; settings.DefaultEnumHandling = EnumHandling.String;
settings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase; settings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
@ -87,7 +87,7 @@ namespace Squidex.Config.Swagger
settings.DocumentProcessors.Add(new XmlTagProcessor()); settings.DocumentProcessors.Add(new XmlTagProcessor());
settings.OperationProcessors.Add(new XmlTagProcessor()); settings.OperationProcessors.Add(new XmlTagProcessor());
settings.OperationProcessors.Add(new XmlResponseTypesProcessor()); settings.OperationProcessors.Add(new XmlResponseTypesProcessor(settings));
return settings; return settings;
} }

2
src/Squidex/Config/Swagger/SwaggerUsage.cs

@ -17,7 +17,7 @@ namespace Squidex.Config.Swagger
{ {
public static void UseMySwagger(this IApplicationBuilder app) public static void UseMySwagger(this IApplicationBuilder app)
{ {
var settings = app.ApplicationServices.GetService<SwaggerOwinSettings>(); var settings = app.ApplicationServices.GetService<SwaggerSettings>();
app.UseSwagger(typeof(SwaggerUsage).GetTypeInfo().Assembly, settings); app.UseSwagger(typeof(SwaggerUsage).GetTypeInfo().Assembly, settings);
} }

13
src/Squidex/Config/Swagger/XmlResponseTypesProcessor.cs

@ -13,6 +13,7 @@ using NJsonSchema;
using NJsonSchema.Generation; using NJsonSchema.Generation;
using NJsonSchema.Infrastructure; using NJsonSchema.Infrastructure;
using NSwag; using NSwag;
using NSwag.AspNetCore;
using NSwag.SwaggerGeneration.Processors; using NSwag.SwaggerGeneration.Processors;
using NSwag.SwaggerGeneration.Processors.Contexts; using NSwag.SwaggerGeneration.Processors.Contexts;
using Squidex.Controllers.Api; using Squidex.Controllers.Api;
@ -25,6 +26,13 @@ namespace Squidex.Config.Swagger
{ {
private static readonly Regex ResponseRegex = new Regex("(?<Code>[0-9]{3}) => (?<Description>.*)", RegexOptions.Compiled); private static readonly Regex ResponseRegex = new Regex("(?<Code>[0-9]{3}) => (?<Description>.*)", RegexOptions.Compiled);
private readonly SwaggerSettings swaggerSettings;
public XmlResponseTypesProcessor(SwaggerSettings swaggerSettings)
{
this.swaggerSettings = swaggerSettings;
}
public async Task<bool> ProcessAsync(OperationProcessorContext context) public async Task<bool> ProcessAsync(OperationProcessorContext context)
{ {
var hasOkResponse = false; var hasOkResponse = false;
@ -62,7 +70,7 @@ namespace Squidex.Config.Swagger
return true; return true;
} }
private static async Task AddInternalErrorResponseAsync(OperationProcessorContext context, SwaggerOperation operation) private async Task AddInternalErrorResponseAsync(OperationProcessorContext context, SwaggerOperation operation)
{ {
if (operation.Responses.ContainsKey("500")) if (operation.Responses.ContainsKey("500"))
{ {
@ -70,7 +78,8 @@ namespace Squidex.Config.Swagger
} }
var errorType = typeof(ErrorDto); var errorType = typeof(ErrorDto);
var errorSchema = JsonObjectTypeDescription.FromType(errorType, new Attribute[0], EnumHandling.String); var errorContract = swaggerSettings.ActualContractResolver.ResolveContract(errorType);
var errorSchema = JsonObjectTypeDescription.FromType(errorType, errorContract, new Attribute[0], EnumHandling.String);
var response = new SwaggerResponse { Description = "Operation failed." }; var response = new SwaggerResponse { Description = "Operation failed." };

13
src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs

@ -36,6 +36,7 @@ namespace Squidex.Controllers.ContentApi.Generator
{ {
private readonly SwaggerJsonSchemaGenerator schemaGenerator; private readonly SwaggerJsonSchemaGenerator schemaGenerator;
private readonly SwaggerDocument document = new SwaggerDocument { Tags = new List<SwaggerTag>() }; private readonly SwaggerDocument document = new SwaggerDocument { Tags = new List<SwaggerTag>() };
private readonly SwaggerSettings swaggerSettings;
private readonly HttpContext context; private readonly HttpContext context;
private readonly JsonSchemaResolver schemaResolver; private readonly JsonSchemaResolver schemaResolver;
private readonly SwaggerGenerator swaggerGenerator; private readonly SwaggerGenerator swaggerGenerator;
@ -46,16 +47,17 @@ namespace Squidex.Controllers.ContentApi.Generator
private string appBasePath; private string appBasePath;
private IAppEntity app; private IAppEntity app;
public SchemasSwaggerGenerator(IHttpContextAccessor context, SwaggerOwinSettings swaggerSettings, IOptions<MyUrlsOptions> urlOptions) public SchemasSwaggerGenerator(IHttpContextAccessor context, SwaggerSettings settings, IOptions<MyUrlsOptions> urlOptions)
{ {
this.context = context.HttpContext; this.context = context.HttpContext;
this.urlOptions = urlOptions.Value; this.urlOptions = urlOptions.Value;
schemaGenerator = new SwaggerJsonSchemaGenerator(swaggerSettings); schemaGenerator = new SwaggerJsonSchemaGenerator(settings);
schemaResolver = new SwaggerSchemaResolver(document, swaggerSettings); schemaResolver = new SwaggerSchemaResolver(document, settings);
swaggerGenerator = new SwaggerGenerator(schemaGenerator, swaggerSettings, schemaResolver); swaggerSettings = settings;
swaggerGenerator = new SwaggerGenerator(schemaGenerator, settings, schemaResolver);
schemaBodyDescription = SwaggerHelper.LoadDocs("schemabody"); schemaBodyDescription = SwaggerHelper.LoadDocs("schemabody");
schemaQueryDescription = SwaggerHelper.LoadDocs("schemaquery"); schemaQueryDescription = SwaggerHelper.LoadDocs("schemaquery");
@ -130,7 +132,8 @@ namespace Squidex.Controllers.ContentApi.Generator
private async Task GenerateBasicSchemas() private async Task GenerateBasicSchemas()
{ {
var errorType = typeof(ErrorDto); var errorType = typeof(ErrorDto);
var errorSchema = JsonObjectTypeDescription.FromType(errorType, new Attribute[0], EnumHandling.String); var errorContract = swaggerSettings.ActualContractResolver.ResolveContract(errorType);
var errorSchema = JsonObjectTypeDescription.FromType(errorType, errorContract, new Attribute[0], EnumHandling.String);
errorDtoSchema = await swaggerGenerator.GenerateAndAppendSchemaFromTypeAsync(errorType, errorSchema.IsNullable, null); errorDtoSchema = await swaggerGenerator.GenerateAndAppendSchemaFromTypeAsync(errorType, errorSchema.IsNullable, null);
} }

4
src/Squidex/Squidex.csproj

@ -64,9 +64,9 @@
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.2" /> <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.2" />
<PackageReference Include="MongoDB.Driver" Version="2.4.4" /> <PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="NJsonSchema" Version="8.33.6323.36213" /> <PackageReference Include="NJsonSchema" Version="9.1.11" />
<PackageReference Include="NodaTime.Serialization.JsonNet" Version="2.0.0" /> <PackageReference Include="NodaTime.Serialization.JsonNet" Version="2.0.0" />
<PackageReference Include="NSwag.AspNetCore" Version="10.6.0" /> <PackageReference Include="NSwag.AspNetCore" Version="11.0.0" />
<PackageReference Include="OpenCover" Version="4.6.519" /> <PackageReference Include="OpenCover" Version="4.6.519" />
<PackageReference Include="ReportGenerator" Version="2.5.8" /> <PackageReference Include="ReportGenerator" Version="2.5.8" />
<PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.3" /> <PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.3" />

Loading…
Cancel
Save