private void BuildRequestInformation(ApiDescriptionDetailModel apiDescriptionDetailModel) { IDictionary <string, string> parameterDescriptions = new Dictionary <string, string>(); var controllerActionDescriptor = apiDescriptionDetailModel.ApiDescription.ActionDescriptor as ControllerActionDescriptor; if (controllerActionDescriptor != null) { parameterDescriptions = _documentationProvider.GetParameterDocumentation(controllerActionDescriptor.MethodInfo); } foreach (var parameter in apiDescriptionDetailModel.ApiDescription.ParameterDescriptions) { if (parameter.Source == BindingSource.Body) { apiDescriptionDetailModel.RequestInformation.BodyParameterDescriptions.Add(CreateApiParameterDescriptionModel(parameter, parameterDescriptions)); apiDescriptionDetailModel.RequestInformation.SupportedRequestSamples.Add("application/json", _objectGenerator.GenerateObject(parameter.Type)); } else if (parameter.Source == BindingSource.Path) { apiDescriptionDetailModel.RequestInformation.RouteParameterDescriptions.Add(CreateApiParameterDescriptionModel(parameter, parameterDescriptions)); } else if (parameter.Source == BindingSource.Query) { apiDescriptionDetailModel.RequestInformation.QueryParameterDescriptions.Add(CreateApiParameterDescriptionModel(parameter, parameterDescriptions)); } } }
private void BuildResponseInformation(ApiDescriptionDetailModel apiDescriptionDetailModel) { foreach (var supportedResponseType in apiDescriptionDetailModel.ApiDescription.SupportedResponseTypes) { apiDescriptionDetailModel.ResponseInformation.SupportedResponseTypes.Add(supportedResponseType); if (supportedResponseType.Type != null) { var modelMetadataWrapper = _modelMetadataWrapperProvider.GetOrCreate(supportedResponseType.Type); apiDescriptionDetailModel.ResponseInformation.SupportedResponseTypeMetadatas.Add(modelMetadataWrapper); apiDescriptionDetailModel.ResponseInformation.SupportedResponseSamples.Add("application/json", _objectGenerator.GenerateObject(supportedResponseType.Type)); } } }
private ApiDescriptionDetailModel CreateApiDescriptionDetailModel(ApiDescriptionModel apiDescriptionModel) { var apiDescriptionDetailModel = new ApiDescriptionDetailModel { Id = apiDescriptionModel.Id, Description = apiDescriptionModel.Description, GroupName = apiDescriptionModel.GroupName, HttpMethod = apiDescriptionModel.HttpMethod, RelativePath = apiDescriptionModel.RelativePath, IsDeprecated = apiDescriptionModel.IsDeprecated, ApiDescription = apiDescriptionModel.ApiDescription }; BuildRequestInformation(apiDescriptionDetailModel); BuildResponseInformation(apiDescriptionDetailModel); return(apiDescriptionDetailModel); }
public bool TryGetValue(string key, out ApiDescriptionDetailModel value) => _apiDescriptionDetailModelCache.TryGetValue(key, out value);