26 lines
962 B
C#
26 lines
962 B
C#
using Microsoft.AspNetCore.Mvc.ApplicationModels;
|
|
|
|
namespace SVSim.EmulatedEntrypoint.Conventions;
|
|
|
|
/// <summary>
|
|
/// Ensures controllers go to the correct swagger definition.
|
|
/// </summary>
|
|
public class SwaggerDefinitionConvention : IControllerModelConvention
|
|
{
|
|
/// <inheritdoc/>
|
|
public void Apply(ControllerModel controller)
|
|
{
|
|
var controllerNamespace = controller.ControllerType.Namespace; // eg. Controllers.V1
|
|
var swaggerDefinition = controllerNamespace.Split('.').Last().ToLower();
|
|
const string defaultRoute = "api/[controller]";
|
|
|
|
controller.ApiExplorer.GroupName = swaggerDefinition;
|
|
foreach (SelectorModel selector in controller.Selectors)
|
|
{
|
|
if (selector.AttributeRouteModel != null && selector.AttributeRouteModel.Template == defaultRoute)
|
|
{
|
|
selector.AttributeRouteModel.Template = $"api/{swaggerDefinition}/[controller]";
|
|
}
|
|
}
|
|
}
|
|
} |