1234567891011121314151617181920212223242526272829303132333435 |
-
- using Microsoft.AspNetCore.Mvc.ApiExplorer;
- namespace OASystem.API
- {
- public class SwaggerApi : IDocumentFilter
- {
- [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
- public class HideApiAttribute : System.Attribute { }
- public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
- {
- foreach (ApiDescription description in context.ApiDescriptions)
- {
- if (description.TryGetMethodInfo(out MethodInfo method))
- {
- if (method.ReflectedType.CustomAttributes.Any(t => t.AttributeType == typeof(HideApiAttribute))
- || method.CustomAttributes.Any(t => t.AttributeType == typeof(HideApiAttribute))
- )
- {
- string key = "/" + description.RelativePath;
- if (key.Contains("?"))
- {
- int idx = key.IndexOf("?", System.StringComparison.Ordinal);
- key = key.Substring(0, idx);
- }
- swaggerDoc.Paths.Remove(key);
- }
- }
- }
- }
- }
- }
|