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
{
///
/// The model that represents an API displayed on the help page.
///
public class HelpPageApiModel
{
///
/// Initializes a new instance of the class.
///
public HelpPageApiModel()
{
UriParameters = new Collection();
SampleRequests = new Dictionary();
SampleResponses = new Dictionary();
ErrorMessages = new Collection();
}
///
/// Gets or sets the that describes the API.
///
public ApiDescription ApiDescription { get; set; }
///
/// Gets or sets the collection that describes the URI parameters for the API.
///
public Collection UriParameters { get; private set; }
///
/// Gets or sets the documentation for the request.
///
public string RequestDocumentation { get; set; }
///
/// Gets or sets the that describes the request body.
///
public ModelDescription RequestModelDescription { get; set; }
///
/// Gets the request body parameter descriptions.
///
public IList RequestBodyParameters
{
get
{
return GetParameterDescriptions(RequestModelDescription);
}
}
///
/// Gets or sets the that describes the resource.
///
public ModelDescription ResourceDescription { get; set; }
///
/// Gets the resource property descriptions.
///
public IList ResourceProperties
{
get
{
return GetParameterDescriptions(ResourceDescription);
}
}
///
/// Gets the sample requests associated with the API.
///
public IDictionary SampleRequests { get; private set; }
///
/// Gets the sample responses associated with the API.
///
public IDictionary SampleResponses { get; private set; }
///
/// Gets the error messages associated with this model.
///
public Collection ErrorMessages { get; private set; }
private static IList 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;
}
}
}