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;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen; using Swashbuckle.AspNetCore.SwaggerGen;
@ -8,7 +9,7 @@ namespace Volo.Abp.Swashbuckle;
public class AbpSwashbuckleDocumentFilter : IDocumentFilter 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) public virtual void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{ {
@ -17,7 +18,7 @@ public class AbpSwashbuckleDocumentFilter : IDocumentFilter
.Where(actionDescriptor => !string.IsNullOrEmpty(actionDescriptor.DisplayName) && .Where(actionDescriptor => !string.IsNullOrEmpty(actionDescriptor.DisplayName) &&
ActionUrlPrefixes.Any(actionUrlPrefix => !actionDescriptor.DisplayName.Contains(actionUrlPrefix))) ActionUrlPrefixes.Any(actionUrlPrefix => !actionDescriptor.DisplayName.Contains(actionUrlPrefix)))
.DistinctBy(actionDescriptor => actionDescriptor.AttributeRouteInfo?.Template) .DistinctBy(actionDescriptor => actionDescriptor.AttributeRouteInfo?.Template)
.Select(actionDescriptor => actionDescriptor.AttributeRouteInfo?.Template?.EnsureStartsWith('/').Replace("?", "")) .Select(RemoveRouteParameterConstraints)
.Where(actionUrl => !string.IsNullOrEmpty(actionUrl)) .Where(actionUrl => !string.IsNullOrEmpty(actionUrl))
.ToList(); .ToList();
@ -25,4 +26,23 @@ public class AbpSwashbuckleDocumentFilter : IDocumentFilter
.Paths .Paths
.RemoveAll(path => !actionUrls.Contains(path.Key)); .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