diff --git a/src/Squidex.Core/Squidex.Core.csproj b/src/Squidex.Core/Squidex.Core.csproj
index 06694e052..bb10ba971 100644
--- a/src/Squidex.Core/Squidex.Core.csproj
+++ b/src/Squidex.Core/Squidex.Core.csproj
@@ -13,8 +13,8 @@
-
-
+
+
diff --git a/src/Squidex.Events/Squidex.Events.csproj b/src/Squidex.Events/Squidex.Events.csproj
index e9b4fd1df..7a80cf949 100644
--- a/src/Squidex.Events/Squidex.Events.csproj
+++ b/src/Squidex.Events/Squidex.Events.csproj
@@ -12,6 +12,6 @@
-
+
diff --git a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
index db94e81dc..a52fa4d98 100644
--- a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
+++ b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/src/Squidex.Read/Squidex.Read.csproj b/src/Squidex.Read/Squidex.Read.csproj
index 447361e27..4a347c975 100644
--- a/src/Squidex.Read/Squidex.Read.csproj
+++ b/src/Squidex.Read/Squidex.Read.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/src/Squidex.Write/Squidex.Write.csproj b/src/Squidex.Write/Squidex.Write.csproj
index 6030e32b8..55bc89d81 100644
--- a/src/Squidex.Write/Squidex.Write.csproj
+++ b/src/Squidex.Write/Squidex.Write.csproj
@@ -14,6 +14,6 @@
-
+
diff --git a/src/Squidex/Config/Swagger/SwaggerServices.cs b/src/Squidex/Config/Swagger/SwaggerServices.cs
index 8eb5836fc..5efde2a63 100644
--- a/src/Squidex/Config/Swagger/SwaggerServices.cs
+++ b/src/Squidex/Config/Swagger/SwaggerServices.cs
@@ -24,12 +24,12 @@ namespace Squidex.Config.Swagger
{
public static void AddMySwaggerSettings(this IServiceCollection services)
{
- services.AddSingleton(typeof(SwaggerOwinSettings), s =>
+ services.AddSingleton(typeof(SwaggerSettings), s =>
{
var urlOptions = s.GetService>().Value;
var settings =
- new SwaggerOwinSettings { Title = "Squidex API Specification", IsAspNetCore = false }
+ new SwaggerSettings { Title = "Squidex API Specification", IsAspNetCore = false }
.ConfigurePaths(urlOptions)
.ConfigureSchemaSettings()
.ConfigureIdentity(urlOptions);
@@ -40,7 +40,7 @@ namespace Squidex.Config.Swagger
services.AddTransient();
}
- private static SwaggerOwinSettings ConfigureIdentity(this SwaggerOwinSettings settings, MyUrlsOptions urlOptions)
+ private static SwaggerSettings ConfigureIdentity(this SwaggerSettings settings, MyUrlsOptions urlOptions)
{
settings.DocumentProcessors.Add(
new SecurityDefinitionAppender(Constants.SecurityDefinition, SwaggerHelper.CreateOAuthSchema(urlOptions)));
@@ -50,7 +50,7 @@ namespace Squidex.Config.Swagger
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";
@@ -68,7 +68,7 @@ namespace Squidex.Config.Swagger
return settings;
}
- private static SwaggerOwinSettings ConfigureSchemaSettings(this SwaggerOwinSettings settings)
+ private static SwaggerSettings ConfigureSchemaSettings(this SwaggerSettings settings)
{
settings.DefaultEnumHandling = EnumHandling.String;
settings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
@@ -87,7 +87,7 @@ namespace Squidex.Config.Swagger
settings.DocumentProcessors.Add(new XmlTagProcessor());
settings.OperationProcessors.Add(new XmlTagProcessor());
- settings.OperationProcessors.Add(new XmlResponseTypesProcessor());
+ settings.OperationProcessors.Add(new XmlResponseTypesProcessor(settings));
return settings;
}
diff --git a/src/Squidex/Config/Swagger/SwaggerUsage.cs b/src/Squidex/Config/Swagger/SwaggerUsage.cs
index c1e1fd57d..b0c1ecc07 100644
--- a/src/Squidex/Config/Swagger/SwaggerUsage.cs
+++ b/src/Squidex/Config/Swagger/SwaggerUsage.cs
@@ -17,7 +17,7 @@ namespace Squidex.Config.Swagger
{
public static void UseMySwagger(this IApplicationBuilder app)
{
- var settings = app.ApplicationServices.GetService();
+ var settings = app.ApplicationServices.GetService();
app.UseSwagger(typeof(SwaggerUsage).GetTypeInfo().Assembly, settings);
}
diff --git a/src/Squidex/Config/Swagger/XmlResponseTypesProcessor.cs b/src/Squidex/Config/Swagger/XmlResponseTypesProcessor.cs
index effff9f3a..b31cbbf45 100644
--- a/src/Squidex/Config/Swagger/XmlResponseTypesProcessor.cs
+++ b/src/Squidex/Config/Swagger/XmlResponseTypesProcessor.cs
@@ -13,6 +13,7 @@ using NJsonSchema;
using NJsonSchema.Generation;
using NJsonSchema.Infrastructure;
using NSwag;
+using NSwag.AspNetCore;
using NSwag.SwaggerGeneration.Processors;
using NSwag.SwaggerGeneration.Processors.Contexts;
using Squidex.Controllers.Api;
@@ -25,6 +26,13 @@ namespace Squidex.Config.Swagger
{
private static readonly Regex ResponseRegex = new Regex("(?[0-9]{3}) => (?.*)", RegexOptions.Compiled);
+ private readonly SwaggerSettings swaggerSettings;
+
+ public XmlResponseTypesProcessor(SwaggerSettings swaggerSettings)
+ {
+ this.swaggerSettings = swaggerSettings;
+ }
+
public async Task ProcessAsync(OperationProcessorContext context)
{
var hasOkResponse = false;
@@ -62,7 +70,7 @@ namespace Squidex.Config.Swagger
return true;
}
- private static async Task AddInternalErrorResponseAsync(OperationProcessorContext context, SwaggerOperation operation)
+ private async Task AddInternalErrorResponseAsync(OperationProcessorContext context, SwaggerOperation operation)
{
if (operation.Responses.ContainsKey("500"))
{
@@ -70,7 +78,8 @@ namespace Squidex.Config.Swagger
}
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." };
diff --git a/src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs b/src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs
index 88909c951..17ebe99cc 100644
--- a/src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs
+++ b/src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs
@@ -36,6 +36,7 @@ namespace Squidex.Controllers.ContentApi.Generator
{
private readonly SwaggerJsonSchemaGenerator schemaGenerator;
private readonly SwaggerDocument document = new SwaggerDocument { Tags = new List() };
+ private readonly SwaggerSettings swaggerSettings;
private readonly HttpContext context;
private readonly JsonSchemaResolver schemaResolver;
private readonly SwaggerGenerator swaggerGenerator;
@@ -46,16 +47,17 @@ namespace Squidex.Controllers.ContentApi.Generator
private string appBasePath;
private IAppEntity app;
- public SchemasSwaggerGenerator(IHttpContextAccessor context, SwaggerOwinSettings swaggerSettings, IOptions urlOptions)
+ public SchemasSwaggerGenerator(IHttpContextAccessor context, SwaggerSettings settings, IOptions urlOptions)
{
this.context = context.HttpContext;
this.urlOptions = urlOptions.Value;
- schemaGenerator = new SwaggerJsonSchemaGenerator(swaggerSettings);
- schemaResolver = new SwaggerSchemaResolver(document, swaggerSettings);
+ schemaGenerator = new SwaggerJsonSchemaGenerator(settings);
+ schemaResolver = new SwaggerSchemaResolver(document, settings);
- swaggerGenerator = new SwaggerGenerator(schemaGenerator, swaggerSettings, schemaResolver);
+ swaggerSettings = settings;
+ swaggerGenerator = new SwaggerGenerator(schemaGenerator, settings, schemaResolver);
schemaBodyDescription = SwaggerHelper.LoadDocs("schemabody");
schemaQueryDescription = SwaggerHelper.LoadDocs("schemaquery");
@@ -130,7 +132,8 @@ namespace Squidex.Controllers.ContentApi.Generator
private async Task GenerateBasicSchemas()
{
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);
}
diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj
index 27c806a92..597919bd5 100644
--- a/src/Squidex/Squidex.csproj
+++ b/src/Squidex/Squidex.csproj
@@ -64,9 +64,9 @@
-
+
-
+