コード例 #1
0
        private static object GeneratePageResult(HelpPageSampleGenerator sampleGenerator, Type type)
        {
            if (type.IsGenericType)
            {
                Type openGenericType = type.GetGenericTypeDefinition();
                if (openGenericType == typeof(PageResult<>))
                {
                    // Get the T in PageResult<T>
                    Type[] typeParameters = type.GetGenericArguments();
                    Debug.Assert(typeParameters.Length == 1);

                    // Create an enumeration to pass as the first parameter to the PageResult<T> constuctor
                    Type itemsType = typeof(List<>).MakeGenericType(typeParameters);
                    object items = sampleGenerator.GetSampleObject(itemsType);

                    // Fill in the other information needed to invoke the PageResult<T> constuctor
                    Type[] parameterTypes = new Type[] { itemsType, typeof(Uri), typeof(long?), };
                    object[] parameters = new object[] { items, null, (long)ObjectGenerator.DefaultCollectionSize, };

                    // Call PageResult(IEnumerable<T> items, Uri nextPageLink, long? count) constructor
                    ConstructorInfo constructor = type.GetConstructor(parameterTypes);
                    return constructor.Invoke(parameters);
                }
            }

            return null;
        }
コード例 #2
0
		private static void GenerateSamples(HelpPageApiModel apiModel, HelpPageSampleGenerator sampleGenerator)
		{
			try
			{
				foreach (var item in sampleGenerator.GetSampleRequests(apiModel.ApiDescription))
				{
					apiModel.SampleRequests.Add(item.Key, item.Value);
					LogInvalidSampleAsError(apiModel, item.Value);
				}

				foreach (var item in sampleGenerator.GetSampleResponses(apiModel.ApiDescription))
				{
					apiModel.SampleResponses.Add(item.Key, item.Value);
					LogInvalidSampleAsError(apiModel, item.Value);
				}
			}
			catch (Exception e)
			{
				apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture,
					"An exception has occurred while generating the sample. Exception message: {0}",
					HelpPageSampleGenerator.UnwrapException(e).Message));
			}
		}
コード例 #3
0
		/// <summary>
		/// Sets the help page sample generator.
		/// </summary>
		/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
		/// <param name="sampleGenerator">The help page sample generator.</param>
		public static void SetHelpPageSampleGenerator(this HttpConfiguration config, HelpPageSampleGenerator sampleGenerator)
		{
			config.Properties.AddOrUpdate(
				typeof(HelpPageSampleGenerator),
				k => sampleGenerator,
				(k, o) => sampleGenerator);
		}
コード例 #4
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);
					}
				}
			}
		}
コード例 #5
0
 // Default factory for sample objects
 private static object DefaultSampleObjectFactory(HelpPageSampleGenerator sampleGenerator, Type type)
 {
     // Try to create a default sample object
     ObjectGenerator objectGenerator = new ObjectGenerator();
     return objectGenerator.GenerateObject(type);
 }