private ApiOperationSpec DescriptionToOperationSpec(ApiDescription description, string queryString, ModelSpecsBuilder modelSpecsBuilder) { modelSpecsBuilder.AddType(description.ActionDescriptor.ReturnType); var paramSpecs = description.ParameterDescriptions .Select(pd => ParamDescriptionToParameterSpec(pd, queryString.Contains(pd.Name), modelSpecsBuilder)) .ToList(); var operationSpec = new ApiOperationSpec { httpMethod = description.HttpMethod.Method, nickname = description.ActionDescriptor.ControllerDescriptor.ControllerName, parameters = paramSpecs, responseClass = description.ActionDescriptor.ReturnType.ToSwaggerType(), summary = description.Documentation, errorResponses = new List <ApiErrorResponseSpec>() }; foreach (var filter in _postFilters) { filter.Apply(description, operationSpec); } return(operationSpec); }
public void Apply(ApiDescription apiDescription, ApiOperationSpec operationSpec) { try { var descriptionXml = XElement.Parse(apiDescription.Documentation); var notes = descriptionXml.Element("remarks"); if (notes != null) operationSpec.notes = notes.Value; foreach (var error in descriptionXml.Elements("response")) { operationSpec.errorResponses.Add(new ApiErrorResponseSpec() { code = Convert.ToInt32(error.Attribute("code").Value), reason = error.Value }); } var summary = descriptionXml.Element("summary"); operationSpec.summary = summary != null ? summary.Value : descriptionXml.Value; } catch (XmlException) { } // sorry, found no other reliable way to tell if this is xml or not }
public void Apply(ApiDescription apiDescription, ApiOperationSpec operationSpec) { operationSpec.errorResponses.Add(new ApiErrorResponseSpec {code = _code, reason = _reason}); }
private ApiOperationSpec DescriptionToOperationSpec(ApiDescription description, string queryString, ModelSpecsBuilder modelSpecsBuilder) { modelSpecsBuilder.AddType(description.ActionDescriptor.ReturnType); var paramSpecs = description.ParameterDescriptions .Select(pd => ParamDescriptionToParameterSpec(pd, queryString.Contains(pd.Name), modelSpecsBuilder)) .ToList(); var operationSpec = new ApiOperationSpec { httpMethod = description.HttpMethod.Method, nickname = description.ActionDescriptor.ControllerDescriptor.ControllerName, parameters = paramSpecs, responseClass = description.ActionDescriptor.ReturnType.ToSwaggerType(), summary = description.Documentation, errorResponses = new List<ApiErrorResponseSpec>() }; foreach (var filter in _postFilters) { filter.Apply(description, operationSpec); } return operationSpec; }
private void AssertApiParameterSpec(ApiOperationSpec operationSpec, string paramName, Action<ApiParameterSpec> applyAssertions) { var paramSpec = operationSpec.parameters.Single(p => p.name == paramName); applyAssertions(paramSpec); }