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