public HttpActionDocumentation GetHttpActionDocumentation(HttpActionDescriptor httpActionDescriptor)
{
var reflectedActionDescriptor = (ReflectedHttpActionDescriptor)httpActionDescriptor;
if (!_WebApiDocumentationMetadata.ApiControllerDocumentation.ContainsKey(httpActionDescriptor.ControllerDescriptor.ControllerType))
{
return new HttpActionDocumentation(
CreateDefaultControllerDocumentation(reflectedActionDescriptor),
reflectedActionDescriptor.ActionName,
String.Empty,
String.Empty,
String.Empty,
CreateDefaultRequestDocumentation(reflectedActionDescriptor),
CreateDefaultResponseDocumentation(reflectedActionDescriptor));
}
var controllerDocumentationMetadata = _WebApiDocumentationMetadata
.ApiControllerDocumentation
.SingleOrDefault(controller => controller.Key.Equals(httpActionDescriptor.ControllerDescriptor.ControllerType))
.Value;
var controllerDocumentation = new HttpControllerDocumentation(
controllerDocumentationMetadata.ApiControllerType,
controllerDocumentationMetadata.ResourceName,
controllerDocumentationMetadata.Summary);
var actionDocumentationMetadata = controllerDocumentationMetadata
.HttpActionDocumentationMetadata
.SingleOrDefault(action => action.Method.Equals(reflectedActionDescriptor.MethodInfo));
if (actionDocumentationMetadata == null)
{
return new HttpActionDocumentation(
controllerDocumentation,
reflectedActionDescriptor.ActionName,
String.Empty,
String.Empty,
String.Empty,
CreateDefaultRequestDocumentation(reflectedActionDescriptor),
CreateDefaultResponseDocumentation(reflectedActionDescriptor));
}
var actionRequestDocumentation = CreateHttpActionRequestDocumentation(reflectedActionDescriptor, actionDocumentationMetadata);
var actionResponseDocumentation = CreateHttpActionResponseDocumentation(actionDocumentationMetadata);
return
new HttpActionDocumentation(controllerDocumentation,
actionDocumentationMetadata.Name,
actionDocumentationMetadata.Summary,
actionDocumentationMetadata.Alert,
actionDocumentationMetadata.Information,
actionRequestDocumentation,
actionResponseDocumentation);
}