Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ApiActionDescription" /> class.
        /// </summary>
        /// <param name="descriptions">The description.</param>
        public ApiActionDescription(IEnumerable <ApiDescription> descriptions)
        {
            var description = descriptions.First();

            this.Name = description.ActionDescriptor.ActionName;
            this.ParameterDescriptions = description.ParameterDescriptions;
            this.Routes    = descriptions.Select(x => new ApiRouteDescription(x));
            this.MainRoute = string.Format("{0} {1}", this.Routes.First().Method, this.Routes.First().Path);

            try
            {
                this.Summary = JsonConvert.DeserializeObject <JObject>(description.Documentation).Value <string>("summary");
                this.Example = JsonConvert.DeserializeObject <JObject>(description.Documentation).Value <string>("example");
                this.Remarks = JsonConvert.DeserializeObject <JObject>(description.Documentation).Value <string>("remarks");
                this.Returns = JsonConvert.DeserializeObject <JObject>(description.Documentation).Value <string>("returns");
            }
            catch (JsonReaderException jrException)
            {
                this.Summary = string.Empty;
                this.Example = string.Empty;
                this.Remarks = string.Empty;
                this.Returns = string.Empty;
            }

            // Generate sample requests
            var sampleRequests = new List <ApiActionSample>();

            foreach (var mediaTypeFormatter in description.SupportedRequestBodyFormatters)
            {
                var request = new ApiActionSample(mediaTypeFormatter, description, ApiActionSampleDirection.Request);

                if (request.Sample != null)
                {
                    sampleRequests.Add(request);
                }
            }

            this.SampleRequests = sampleRequests;

            // Generate sample responses
            var sampleResponses = new List <ApiActionSample>();

            foreach (var mediaTypeFormatter in description.SupportedResponseFormatters)
            {
                var response = new ApiActionSample(mediaTypeFormatter, description, ApiActionSampleDirection.Response);

                if (response.Sample != null)
                {
                    sampleResponses.Add(response);
                }
            }

            this.SampleResponses = sampleResponses;
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ApiActionDescription" /> class.
        /// </summary>
        /// <param name="group">The group.</param>
        public ApiActionDescription(IGrouping <string, ApiDescription> group)
        {
            this.Name = group.First().ActionDescriptor.ActionName;
            this.ParameterDescriptions = group.Select(a => a.ParameterDescriptions).First();
            this.Routes = group.Select(a => new ApiRouteDescription(a));

            try
            {
                this.Summary = JsonConvert.DeserializeObject <JObject>(group.Key).Value <string>("summary");
                this.Example = JsonConvert.DeserializeObject <JObject>(group.Key).Value <string>("example");
                this.Remarks = JsonConvert.DeserializeObject <JObject>(group.Key).Value <string>("remarks");
                this.Returns = JsonConvert.DeserializeObject <JObject>(group.Key).Value <string>("returns");
            }
            catch (JsonReaderException jrException)
            {
                this.Summary = string.Empty;
                this.Example = string.Empty;
                this.Remarks = string.Empty;
                this.Returns = string.Empty;
            }

            // Generate sample requests
            var sampleRequests = new List <ApiActionSample>();

            foreach (var mediaTypeFormatter in group.First().SupportedRequestBodyFormatters)
            {
                var request = new ApiActionSample(mediaTypeFormatter, group.First(), ApiActionSampleDirection.Request);

                if (request.Sample != null)
                {
                    sampleRequests.Add(request);
                }
            }

            this.SampleRequests = sampleRequests;

            // Generate sample responses
            var sampleResponses = new List <ApiActionSample>();

            foreach (var mediaTypeFormatter in group.First().SupportedResponseFormatters)
            {
                var response = new ApiActionSample(mediaTypeFormatter, group.First(), ApiActionSampleDirection.Response);

                if (response.Sample != null)
                {
                    sampleResponses.Add(response);
                }
            }

            this.SampleResponses = sampleResponses;
        }