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)); }
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))))); }