a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Linq;
|
|
using System.Web.Http.Controllers;
|
|
using System.Web.Http.Description;
|
|
|
|
namespace System.Web.Http.ApiExplorer
|
|
{
|
|
public class AttributeDocumentationProvider : IDocumentationProvider
|
|
{
|
|
public string GetDocumentation(HttpActionDescriptor actionDescriptor)
|
|
{
|
|
var apiDocumentation = actionDescriptor.GetCustomAttributes<ApiDocumentationAttribute>().FirstOrDefault();
|
|
if (apiDocumentation != null)
|
|
{
|
|
return apiDocumentation.Description;
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
|
|
public string GetDocumentation(HttpParameterDescriptor parameterDescriptor)
|
|
{
|
|
var parameterDocumentation = parameterDescriptor.ActionDescriptor.GetCustomAttributes<ApiParameterDocumentationAttribute>().FirstOrDefault(param => param.ParameterName == parameterDescriptor.ParameterName);
|
|
if (parameterDocumentation != null)
|
|
{
|
|
return parameterDocumentation.Description;
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class ApiDocumentationAttribute : Attribute
|
|
{
|
|
public ApiDocumentationAttribute(string description)
|
|
{
|
|
Description = description;
|
|
}
|
|
|
|
public string Description { get; private set; }
|
|
}
|
|
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
|
|
public sealed class ApiParameterDocumentationAttribute : Attribute
|
|
{
|
|
public ApiParameterDocumentationAttribute(string parameterName, string description)
|
|
{
|
|
ParameterName = parameterName;
|
|
Description = description;
|
|
}
|
|
|
|
public string ParameterName { get; private set; }
|
|
|
|
public string Description { get; private set; }
|
|
}
|
|
}
|