44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
using ApiExplorerWebSite.Controllers;
|
|
using Microsoft.AspNetCore.Mvc.ApplicationModels;
|
|
|
|
namespace ApiExplorerWebSite
|
|
{
|
|
// Disables ApiExplorer for a specific controller type.
|
|
// This is part of the test that validates that ApiExplorer can be configured via
|
|
// convention
|
|
public class ApiExplorerInboundOutboundConvention : IApplicationModelConvention
|
|
{
|
|
private readonly TypeInfo _type;
|
|
|
|
public ApiExplorerInboundOutboundConvention(Type type)
|
|
{
|
|
_type = type.GetTypeInfo();
|
|
}
|
|
|
|
public void Apply(ApplicationModel application)
|
|
{
|
|
foreach (var controller in application.Controllers)
|
|
{
|
|
if (controller.ControllerType == _type)
|
|
{
|
|
foreach (var action in controller.Actions)
|
|
{
|
|
if (action.ActionName == nameof(ApiExplorerInboundOutBoundController.SuppressedForPathMatching))
|
|
{
|
|
action.Selectors[0].AttributeRouteModel.SuppressPathMatching = true;
|
|
}
|
|
else if (action.ActionName == nameof(ApiExplorerInboundOutBoundController.SuppressedForLinkGeneration))
|
|
{
|
|
action.Selectors[0].AttributeRouteModel.SuppressLinkGeneration = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |