Example #1
0
        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);
 }