Browse Source

Update AbpSwashbuckleDocumentFilter.cs

pull/15722/head
Engincan VESKE 4 years ago
parent
commit
dd45cb1b34
  1. 24
      framework/src/Volo.Abp.Swashbuckle/Volo/Abp/Swashbuckle/AbpSwashbuckleDocumentFilter.cs

24
framework/src/Volo.Abp.Swashbuckle/Volo/Abp/Swashbuckle/AbpSwashbuckleDocumentFilter.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
@ -8,7 +9,7 @@ namespace Volo.Abp.Swashbuckle;
public class AbpSwashbuckleDocumentFilter : IDocumentFilter
{
protected string[] ActionUrlPrefixes = new[] {"Volo."};
protected virtual string[] ActionUrlPrefixes { get; set; } = new[] { "Volo." };
public virtual void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
@ -17,7 +18,7 @@ public class AbpSwashbuckleDocumentFilter : IDocumentFilter
.Where(actionDescriptor => !string.IsNullOrEmpty(actionDescriptor.DisplayName) &&
ActionUrlPrefixes.Any(actionUrlPrefix => !actionDescriptor.DisplayName.Contains(actionUrlPrefix)))
.DistinctBy(actionDescriptor => actionDescriptor.AttributeRouteInfo?.Template)
.Select(actionDescriptor => actionDescriptor.AttributeRouteInfo?.Template?.EnsureStartsWith('/').Replace("?", ""))
.Select(RemoveRouteParameterConstraints)
.Where(actionUrl => !string.IsNullOrEmpty(actionUrl))
.ToList();
@ -25,4 +26,23 @@ public class AbpSwashbuckleDocumentFilter : IDocumentFilter
.Paths
.RemoveAll(path => !actionUrls.Contains(path.Key));
}
protected virtual string RemoveRouteParameterConstraints(ActionDescriptor actionDescriptor)
{
var route = actionDescriptor.AttributeRouteInfo?.Template?.EnsureStartsWith('/').Replace("?", "");
if (string.IsNullOrWhiteSpace(route))
{
return route;
}
var startIndex = route.IndexOf(":", StringComparison.Ordinal);
var endIndex = route.IndexOf("}", StringComparison.Ordinal);
if (startIndex == -1 || endIndex == -1)
{
return route;
}
return route.Remove(startIndex, (endIndex - startIndex));
}
}
Loading…
Cancel
Save