public void Apply(OpenApiDocument document, IOpenApiDocumentFilterContext documentFilterContext) { if (!string.IsNullOrWhiteSpace(_documentRoute) && !documentFilterContext.DocumentRoute.StartsWith(_documentRoute)) { return; } document.Tags.Add(_tag); }
public void Apply(OpenApiDocument document, IOpenApiDocumentFilterContext documentFilterContext) { document.Extensions.Add("x-tagGroups", new FooExtension()); document.Tags.Add(new OpenApiTag { Name = "Introduction", Description = "Description text" }); }
public void Apply(OpenApiDocument document, IOpenApiDocumentFilterContext documentFilterContext) { if (!string.IsNullOrWhiteSpace(_documentRoute) && !documentFilterContext.DocumentRoute.StartsWith(_documentRoute)) { return; } object instance = document; if (!string.IsNullOrWhiteSpace(_extension.path)) { foreach (var openApiPathSegment in _extension.path.Split('.')) { var selector = ""; var propertyName = openApiPathSegment; if (propertyName.EndsWith("]")) { var index = propertyName.IndexOf("["); selector = propertyName.Substring(index + 1, propertyName.Length - index - 2); propertyName = propertyName.Substring(0, index); } instance = instance.GetType().GetProperty(propertyName).GetValue(instance); if (instance is IList list) { var index = selector.IndexOf("="); if (index == -1) { instance = list[int.Parse(selector)]; } else { var selectorValue = selector.Substring(index + 1, selector.Length - index - 1); var selectorName = selector.Substring(0, index); foreach (var item in list) { if (item.GetType().GetProperty(selectorName).GetValue(item).Equals(selectorValue)) { instance = item; break; } } } } else if (instance is IDictionary dictionary) { instance = dictionary[selector]; } } } var extensions = instance.GetType().GetProperty("Extensions").GetValue(instance) as IDictionary <string, IOpenApiExtension>; extensions.Add(_extension.name, this); }