コード例 #1
0
		private static ModelDescriptionGenerator InitializeModelDescriptionGenerator(HttpConfiguration config)
		{
			ModelDescriptionGenerator modelGenerator = new ModelDescriptionGenerator(config);
			Collection<ApiDescription> apis = config.Services.GetApiExplorer().ApiDescriptions;
			foreach (ApiDescription api in apis)
			{
				ApiParameterDescription parameterDescription;
				Type parameterType;
				if (TryGetResourceParameter(api, config, out parameterDescription, out parameterType))
				{
					modelGenerator.GetOrCreateModelDescription(parameterType);
				}
			}
			return modelGenerator;
		}
コード例 #2
0
		private static void GenerateRequestModelDescription(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator, HelpPageSampleGenerator sampleGenerator)
		{
			ApiDescription apiDescription = apiModel.ApiDescription;
			foreach (ApiParameterDescription apiParameter in apiDescription.ParameterDescriptions)
			{
				if (apiParameter.Source == ApiParameterSource.FromBody)
				{
					Type parameterType = apiParameter.ParameterDescriptor.ParameterType;
					apiModel.RequestModelDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
					apiModel.RequestDocumentation = apiParameter.Documentation;
				}
				else if (apiParameter.ParameterDescriptor != null &&
					apiParameter.ParameterDescriptor.ParameterType == typeof(HttpRequestMessage))
				{
					Type parameterType = sampleGenerator.ResolveHttpRequestMessageType(apiDescription);

					if (parameterType != null)
					{
						apiModel.RequestModelDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
					}
				}
			}
		}
コード例 #3
0
		private static void GenerateResourceDescription(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator)
		{
			ResponseDescription response = apiModel.ApiDescription.ResponseDescription;
			Type responseType = response.ResponseType ?? response.DeclaredType;
			if (responseType != null && responseType != typeof(void))
			{
				apiModel.ResourceDescription = modelGenerator.GetOrCreateModelDescription(responseType);
			}
		}
コード例 #4
0
		private static void GenerateUriParameters(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator)
		{
			ApiDescription apiDescription = apiModel.ApiDescription;
			foreach (ApiParameterDescription apiParameter in apiDescription.ParameterDescriptions)
			{
				if (apiParameter.Source == ApiParameterSource.FromUri)
				{
					HttpParameterDescriptor parameterDescriptor = apiParameter.ParameterDescriptor;
					Type parameterType = null;
					ModelDescription typeDescription = null;
					ComplexTypeModelDescription complexTypeDescription = null;
					if (parameterDescriptor != null)
					{
						parameterType = parameterDescriptor.ParameterType;
						typeDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
						complexTypeDescription = typeDescription as ComplexTypeModelDescription;
					}

					if (complexTypeDescription != null)
					{
						foreach (ParameterDescription uriParameter in complexTypeDescription.Properties)
						{
							apiModel.UriParameters.Add(uriParameter);
						}
					}
					else if (parameterDescriptor != null)
					{
						ParameterDescription uriParameter =
							AddParameterDescription(apiModel, apiParameter, typeDescription);

						if (!parameterDescriptor.IsOptional)
						{
							uriParameter.Annotations.Add(new ParameterAnnotation() { Documentation = "Required" });
						}

						object defaultValue = parameterDescriptor.DefaultValue;
						if (defaultValue != null)
						{
							uriParameter.Annotations.Add(new ParameterAnnotation() { Documentation = "Default value is " + Convert.ToString(defaultValue, CultureInfo.InvariantCulture) });
						}
					}
					else
					{
						Debug.Assert(parameterDescriptor == null);

						// If parameterDescriptor is null, this is an undeclared route parameter which only occurs
						// when source is FromUri. Ignored in request model and among resource parameters but listed
						// as a simple string here.
						ModelDescription modelDescription = modelGenerator.GetOrCreateModelDescription(typeof(string));
						AddParameterDescription(apiModel, apiParameter, modelDescription);
					}
				}
			}
		}