private IEnumerable<HttpActionRequestParameterDocumentation> CreateHttpActionRequestParameters(HttpActionDescriptor httpActionDescriptor, HttpActionDocumentationMetadata actionDocumentationMetadata) { return from parameterDescriptor in httpActionDescriptor.GetParameters() where parameterDescriptor.ParameterBinderAttribute is FromUriAttribute || TypeHelper.CanConvertFromString(parameterDescriptor.ParameterType) let parameterDescription = actionDocumentationMetadata.HttpActionParameters .Any(parameterDocumentation => parameterDocumentation.Name.Equals(parameterDescriptor.ParameterName) && parameterDocumentation.Type.Equals(parameterDescriptor.ParameterType)) ? actionDocumentationMetadata.HttpActionParameters .Single(parameterDocumentation => parameterDocumentation.Name.Equals(parameterDescriptor.ParameterName) && parameterDocumentation.Type.Equals(parameterDescriptor.ParameterType)).Description : String.Empty select new HttpActionRequestParameterDocumentation( parameterDescriptor.ParameterName, GetProperyTypeName(parameterDescriptor.ParameterType), parameterDescription, !parameterDescriptor.IsOptional); }
private HttpActionResponseDocumentation CreateHttpActionResponseDocumentation(HttpActionDocumentationMetadata actionDocumentationMetadata) { if (actionDocumentationMetadata.HttpActionResponseDocumentationMetadata == null) { return null; } // Set the response status code. HttpStatusCode statusCode = actionDocumentationMetadata.HttpActionResponseDocumentationMetadata.StatusCode; // Set the summary which describes the data returned by the HTTP action. String responseSummary = actionDocumentationMetadata.HttpActionResponseDocumentationMetadata.Summary; IEnumerable<PropertyDocumentation> documentedProperties = null; Object responseExample = null; Type responseType = GetResponseType(actionDocumentationMetadata.HttpActionResponseDocumentationMetadata.Type); if (responseType != null && _WebApiDocumentationMetadata.DtoDocumentation.ContainsKey(responseType)) { DtoDocumentationMetadata dtoDocumentationMetadata = _WebApiDocumentationMetadata.DtoDocumentation[responseType]; // Set the summary which describes the data returned by the HTTP action. responseSummary = responseSummary ?? dtoDocumentationMetadata.Summary; // Generate documentation for the response object's properties. documentedProperties = CreatePropertyDocumentation(dtoDocumentationMetadata, String.Empty); // Create an example response object. responseExample = actionDocumentationMetadata.HttpActionResponseDocumentationMetadata.Type.GetInterface("IEnumerable") != null || actionDocumentationMetadata.HttpActionResponseDocumentationMetadata.Type.IsArray ? new[] { CreateResponseContentExample(dtoDocumentationMetadata) } : CreateResponseContentExample(dtoDocumentationMetadata); } return new HttpActionResponseDocumentation( responseSummary, statusCode, documentedProperties ?? Enumerable.Empty<PropertyDocumentation>(), responseExample); }
private HttpActionRequestDocumentation CreateHttpActionRequestDocumentation(HttpActionDescriptor httpActionDescriptor, HttpActionDocumentationMetadata actionDocumentationMetadata) { var requestParameters = CreateHttpActionRequestParameters(httpActionDescriptor, actionDocumentationMetadata); var requestContent = CreateHttpActionRequestBody(httpActionDescriptor); return new HttpActionRequestDocumentation(requestParameters, requestContent); }