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; | ||
|  |         } | ||
|  |     } | ||
|  | } |