You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.8 KiB
108 lines
3.8 KiB
8 months ago
|
using System.Collections.Generic;
|
||
|
using System.Collections.ObjectModel;
|
||
|
using System.Net.Http.Headers;
|
||
|
using System.Web.Http.Description;
|
||
|
using WebAPI.Areas.HelpPage.ModelDescriptions;
|
||
|
|
||
|
namespace WebAPI.Areas.HelpPage.Models
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The model that represents an API displayed on the help page.
|
||
|
/// </summary>
|
||
|
public class HelpPageApiModel
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Initializes a new instance of the <see cref="HelpPageApiModel"/> class.
|
||
|
/// </summary>
|
||
|
public HelpPageApiModel()
|
||
|
{
|
||
|
UriParameters = new Collection<ParameterDescription>();
|
||
|
SampleRequests = new Dictionary<MediaTypeHeaderValue, object>();
|
||
|
SampleResponses = new Dictionary<MediaTypeHeaderValue, object>();
|
||
|
ErrorMessages = new Collection<string>();
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the <see cref="ApiDescription"/> that describes the API.
|
||
|
/// </summary>
|
||
|
public ApiDescription ApiDescription { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the <see cref="ParameterDescription"/> collection that describes the URI parameters for the API.
|
||
|
/// </summary>
|
||
|
public Collection<ParameterDescription> UriParameters { get; private set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the documentation for the request.
|
||
|
/// </summary>
|
||
|
public string RequestDocumentation { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the <see cref="ModelDescription"/> that describes the request body.
|
||
|
/// </summary>
|
||
|
public ModelDescription RequestModelDescription { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets the request body parameter descriptions.
|
||
|
/// </summary>
|
||
|
public IList<ParameterDescription> RequestBodyParameters
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return GetParameterDescriptions(RequestModelDescription);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the <see cref="ModelDescription"/> that describes the resource.
|
||
|
/// </summary>
|
||
|
public ModelDescription ResourceDescription { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets the resource property descriptions.
|
||
|
/// </summary>
|
||
|
public IList<ParameterDescription> ResourceProperties
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return GetParameterDescriptions(ResourceDescription);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets the sample requests associated with the API.
|
||
|
/// </summary>
|
||
|
public IDictionary<MediaTypeHeaderValue, object> SampleRequests { get; private set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets the sample responses associated with the API.
|
||
|
/// </summary>
|
||
|
public IDictionary<MediaTypeHeaderValue, object> SampleResponses { get; private set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets the error messages associated with this model.
|
||
|
/// </summary>
|
||
|
public Collection<string> ErrorMessages { get; private set; }
|
||
|
|
||
|
private static IList<ParameterDescription> GetParameterDescriptions(ModelDescription modelDescription)
|
||
|
{
|
||
|
ComplexTypeModelDescription complexTypeModelDescription = modelDescription as ComplexTypeModelDescription;
|
||
|
if (complexTypeModelDescription != null)
|
||
|
{
|
||
|
return complexTypeModelDescription.Properties;
|
||
|
}
|
||
|
|
||
|
CollectionModelDescription collectionModelDescription = modelDescription as CollectionModelDescription;
|
||
|
if (collectionModelDescription != null)
|
||
|
{
|
||
|
complexTypeModelDescription = collectionModelDescription.ElementDescription as ComplexTypeModelDescription;
|
||
|
if (complexTypeModelDescription != null)
|
||
|
{
|
||
|
return complexTypeModelDescription.Properties;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
}
|