Example #1
0
            public static ParameterWithExample Convert(IParameter parameter)
            {
                var parameterWithExample = new ParameterWithExample();
                var fields = parameter.GetType().GetFields();

                foreach (var field in fields)
                {
                    parameterWithExample
                    .GetType()
                    .GetField(field.Name)
                    .SetValue(parameterWithExample, field.GetValue(parameter));
                }

                return(parameterWithExample);
            }
Example #2
0
        /// <summary>
        /// Prepare swagger request.
        /// </summary>
        /// <param name="operation">See <see cref="Operation"/>.</param>
        /// <param name="context">See <see cref="OperationFilterContext"/>.</param>
        private static void PrepareSwaggerRequest(Operation operation, OperationFilterContext context)
        {
            var responseAttributes = context.ApiDescription
                                     .ActionAttributes()
                                     .OfType <SwaggerRequestExamplesAttribute>();

            var actionDescriptor = (ControllerActionDescriptor)context.ApiDescription.ActionDescriptor;
            var action           = actionDescriptor.ControllerTypeInfo.GetMethod(actionDescriptor.ActionName);
            var parameters       = action.GetParameters();

            for (var i = 0; i < parameters.Length; i++)
            {
                var parameter = parameters[i];
                var attr      = parameter.GetCustomAttribute <SwaggerRequestExamplesAttribute>();

                if (attr != null)
                {
                    var request            = operation.Parameters.FirstOrDefault(p => p.Name == parameter.Name);
                    var list               = Enumerable.ToList(operation.Parameters);
                    var requestWithExample = ParameterWithExample.Convert(request);

                    if (attr.Instance != null)
                    {
                        requestWithExample.Xexamples = FormatAsJson(attr.Instance);
                    }
                    else if (!string.IsNullOrEmpty(attr.Example))
                    {
                        requestWithExample.Xexamples = new Dictionary <string, string>()
                        {
                            {
                                "application/json", attr.Example
                            }
                        };
                    }

                    operation.Parameters[i] = requestWithExample;
                }
            }
        }