private static IEnumerable <SwaggerResponseAttribute> GetActionAttributes(ApiDescription apiDesc)
        {
            var controllerAttributes = apiDesc.ControllerAttributes().OfType <SwaggerResponseAttribute>();
            var actionAttributes     = apiDesc.ActionAttributes().OfType <SwaggerResponseAttribute>();

            return(controllerAttributes.Union(actionAttributes));
        }
Beispiel #2
0
        /// <summary>
        /// Resolving api version constraint.
        /// </summary>
        /// <param name="docName">docName parameter.</param>
        /// <param name="apiDesc">Api description.</param>
        /// <returns>Return if version exists.</returns>
        private bool ResolveDocInclusionPredicate(string docName, ApiDescription apiDesc)
        {
            var values = apiDesc.RelativePath
                         .Split('/')
                         .Select(v => v.Replace("v{version}", docName));

            apiDesc.RelativePath = string.Join("/", values);

            var versionParameter = apiDesc.ParameterDescriptions
                                   .SingleOrDefault(p => p.Name == "version");

            if (versionParameter != null)
            {
                apiDesc.ParameterDescriptions.Remove(versionParameter);
            }

            var versions = apiDesc.ControllerAttributes()
                           .OfType <ApiVersionAttribute>()
                           .SelectMany(attr => attr.Versions);

            return(versions.Any(v =>
            {
                return $"v{v.ToString()}" == docName;
            }));
        }
Beispiel #3
0
        private static void SetResponseModelExamples(Operation operation, ApiDescription apiDescription)
        {
            var responseAttributes = apiDescription
                                     .ActionAttributes()
                                     .OfType <SwaggerResponseExampleAttribute>()
                                     .ToList();

            responseAttributes.AddRange(apiDescription.ControllerAttributes().OfType <SwaggerResponseExampleAttribute>());

            foreach (var attr in responseAttributes)
            {
                var statusCode = attr.StatusCode.ToString();

                var response = operation.Responses.FirstOrDefault(r => r.Key == statusCode);

                if (response.Equals(default(KeyValuePair <string, Response>)) == false)
                {
                    if (response.Value != null)
                    {
                        var provider = ExamplesProvider(_services, attr.ExamplesProviderType);

                        var serializerSettings = SerializerSettings(attr.ContractResolver, attr.JsonConverter);

                        response.Value.Examples = FormatJson(provider, serializerSettings, true);
                    }
                }
            }
        }
        private static bool IsExcluded(ApiDescription description)
        {
            var controllerExcluded = description.ControllerAttributes().OfType <AuthorizeAttribute>()
                                     .Any(IsAdministratorRole);

            if (controllerExcluded)
            {
                return(true);
            }

            var actionExcluded = description.ActionAttributes().OfType <AuthorizeAttribute>().Any(IsAdministratorRole);

            if (actionExcluded)
            {
                return(true);
            }

            return(false);
        }