108 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |