/// <summary>
        /// Initializes a new instance of the <see cref="ApiActionSample" /> class.
        /// </summary>
        /// <param name="formatter">The formatter.</param>
        /// <param name="apiDescription">The API description.</param>
        /// <param name="sampleDirection">The sample direction.</param>
        public ApiActionSample(
            MediaTypeFormatter formatter, ApiDescription apiDescription, ApiActionSampleDirection sampleDirection)
        {
            Type type = null;

            if (formatter != null)
            {
                this.MediaType = formatter.SupportedMediaTypes.First().MediaType;

                if (sampleDirection == ApiActionSampleDirection.Request)
                {
                    var requestBodyParameter =
                        apiDescription.ParameterDescriptions.FirstOrDefault(
                            p => p.Source == ApiParameterSource.FromBody);

                    type = requestBodyParameter == null
                                            ? null
                                            : requestBodyParameter.ParameterDescriptor.ParameterType;
                }
                else if (sampleDirection == ApiActionSampleDirection.Response)
                {
                    var returnTypes = apiDescription.ActionDescriptor.GetCustomAttributes<ApiReturnTypeAttribute>();

                    if (returnTypes.Any())
                    {
                        type = returnTypes.First().ReturnType;
                    }
                }
            }

            if (type != null && formatter.CanWriteType(type))
            {
                var content =
                            new ObjectContent(
                                type,
                                SampleGeneratorService.Instance.GetSampleObject(type),
                                formatter).ReadAsStringAsync().Result;

                if (this.MediaType.ToUpperInvariant().Contains("XML"))
                {
                    this.Sample = SampleGeneratorService.Instance.TryFormatXml(content);
                }
                else if (this.MediaType.ToUpperInvariant().Contains("JSON"))
                {
                    this.Sample = SampleGeneratorService.Instance.TryFormatJson(content);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ApiActionSample" /> class.
        /// </summary>
        /// <param name="formatter">The formatter.</param>
        /// <param name="apiDescription">The API description.</param>
        /// <param name="sampleDirection">The sample direction.</param>
        public ApiActionSample(
            MediaTypeFormatter formatter, ApiDescription apiDescription, ApiActionSampleDirection sampleDirection)
        {
            Type type = null;

            if (formatter != null)
            {
                this.MediaType = formatter.SupportedMediaTypes.First().MediaType;

                if (sampleDirection == ApiActionSampleDirection.Request)
                {
                    var requestBodyParameter =
                        apiDescription.ParameterDescriptions.FirstOrDefault(
                            p => p.Source == ApiParameterSource.FromBody);

                    type = requestBodyParameter == null
                                            ? null
                                            : requestBodyParameter.ParameterDescriptor.ParameterType;
                }
                else if (sampleDirection == ApiActionSampleDirection.Response)
                {
                    var returnTypes = apiDescription.ActionDescriptor.GetCustomAttributes <ApiReturnTypeAttribute>();

                    if (returnTypes.Any())
                    {
                        type = returnTypes.First().ReturnType;
                    }
                }
            }

            if (type != null && formatter.CanWriteType(type))
            {
                var content =
                    new ObjectContent(
                        type,
                        SampleGeneratorService.Instance.GetSampleObject(type),
                        formatter).ReadAsStringAsync().Result;

                if (this.MediaType.ToUpperInvariant().Contains("XML"))
                {
                    this.Sample = SampleGeneratorService.Instance.TryFormatXml(content);
                }
                else if (this.MediaType.ToUpperInvariant().Contains("JSON"))
                {
                    this.Sample = SampleGeneratorService.Instance.TryFormatJson(content);
                }
            }
        }