public static SwaggerEnabledConfiguration EnableSwagger(
            this HttpConfiguration httpConfig,
            string routeTemplate,
            Action <SwaggerDocsConfig> configure = null)
        {
            var config = new SwaggerDocsConfig();

            if (configure != null)
            {
                configure(config);
            }

            httpConfig.Routes.MapHttpRoute(
                name: "swagger_docs",
                routeTemplate: routeTemplate,
                defaults: null,
                constraints: new { apiVersion = @".+" },
                handler: new SwaggerDocsHandler(config)
                );

            return(new SwaggerEnabledConfiguration(
                       httpConfig,
                       config.GetRootUrl,
                       config.GetApiVersions().Select(version => routeTemplate.Replace("{apiVersion}", version))));
        }
        public static IDictionary <AreaDescription, AreaSwaggerConfigurationContext> DiscoverAreas(Assembly assembly,
                                                                                                   Action <SwaggerDocsConfig, AreaDescription> configure = null, string routeAreaTemplate = null)
        {
            var areasDiscoveryPaths = new Dictionary <AreaDescription, AreaSwaggerConfigurationContext>();

            foreach (var type in assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(AreaRegistration))))
            {
                var config           = new SwaggerDocsConfig();
                var areaRegistration = (AreaRegistration)Activator.CreateInstance(type);
                var area             = new AreaDescription(areaRegistration.AreaName, type);

                configure?.Invoke(config, area);

                var routeTemplate  = (routeAreaTemplate ?? DefaultRouteTemplate).Replace("{areaName}", areaRegistration.AreaName.ToLowerInvariant());
                var discoveryPaths = config.GetApiVersions().Select(version => routeTemplate.Replace("{apiVersion}", version));

                areasDiscoveryPaths.Add(area, new AreaSwaggerConfigurationContext(config, discoveryPaths, routeTemplate));
            }

            return(areasDiscoveryPaths);
        }
        private static AreaSwaggerConfigurationContext EnableSwaggerOutOfAreas(HttpConfiguration httpConfig, Action <SwaggerDocsConfig, AreaDescription> configure,
                                                                               string routeAreaTemplate, IList <AreaDescription> allAreas)
        {
            var config = new SwaggerDocsConfig();

            configure?.Invoke(config, AreaDescription.Empty);

            var routeTemplate = (routeAreaTemplate ?? DefaultRouteTemplate)
                                .Replace("{areaName}/", string.Empty);

            httpConfig.Routes.MapHttpRoute(
                name: "swagger_docs" + routeTemplate,
                routeTemplate: routeTemplate,
                defaults: null,
                constraints: new { apiVersion = @".+" },
                handler: new SwaggerDocsHandler(config, null, allAreas)
                );

            var discoveryPaths = config.GetApiVersions().Select(version => routeTemplate.Replace("{apiVersion}", version));

            return(new AreaSwaggerConfigurationContext(config, discoveryPaths, routeTemplate));
        }
Exemplo n.º 4
0
        public static SwaggerEnabledConfiguration EnableSwagger(
            this HttpConfiguration httpConfig,
            string routeTemplate,
            Action <SwaggerDocsConfig> configure = null)
        {
            SwaggerDocsConfig config = new SwaggerDocsConfig();

            if (configure != null)
            {
                configure(config);
            }
            HttpRouteCollectionExtensions.MapHttpRoute(httpConfig.get_Routes(), "swagger_docs" + routeTemplate, routeTemplate, (object)null, (object)new
            {
                apiVersion = ".+"
            }, (HttpMessageHandler) new SwaggerDocsHandler(config));
            return(new SwaggerEnabledConfiguration(httpConfig, new Func <HttpRequestMessage, string>(config.GetRootUrl), config.GetApiVersions().Select <string, string>((Func <string, string>)(version => routeTemplate.Replace("{apiVersion}", version)))));
        }