|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc.Abstractions;
|
|
|
|
|
using Microsoft.OpenApi.Models;
|
|
|
|
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
|
|
|
@ -10,6 +11,8 @@ namespace Volo.Abp.Swashbuckle;
|
|
|
|
|
public class AbpSwashbuckleDocumentFilter : IDocumentFilter
|
|
|
|
|
{
|
|
|
|
|
protected virtual string[] ActionUrlPrefixes { get; set; } = new[] { "Volo." };
|
|
|
|
|
|
|
|
|
|
protected virtual string RegexConstraintPattern => @":regex\(([^()]*)\)";
|
|
|
|
|
|
|
|
|
|
public virtual void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
|
|
|
|
|
{
|
|
|
|
@ -34,15 +37,22 @@ public class AbpSwashbuckleDocumentFilter : IDocumentFilter
|
|
|
|
|
{
|
|
|
|
|
return route;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var startIndex = route.IndexOf(":", StringComparison.Ordinal);
|
|
|
|
|
var endIndex = route.IndexOf("}", StringComparison.Ordinal);
|
|
|
|
|
|
|
|
|
|
if (startIndex == -1 || endIndex == -1)
|
|
|
|
|
|
|
|
|
|
route = Regex.Replace(route, RegexConstraintPattern, "");
|
|
|
|
|
|
|
|
|
|
while (route.Contains(':'))
|
|
|
|
|
{
|
|
|
|
|
return route;
|
|
|
|
|
var startIndex = route.IndexOf(":", StringComparison.Ordinal);
|
|
|
|
|
var endIndex = route.IndexOf("}", startIndex);
|
|
|
|
|
|
|
|
|
|
if (endIndex == -1)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
route = route.Remove(startIndex, (endIndex - startIndex));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return route.Remove(startIndex, (endIndex - startIndex));
|
|
|
|
|
return route;
|
|
|
|
|
}
|
|
|
|
|
}
|