Exemple #1
0
        public static IApplicationBuilder UseSwaggerUi(this IApplicationBuilder app, Action <SwaggerUiConfig> configure = null)
        {
            var config = new SwaggerUiConfig();

            configure?.Invoke(config);

            // Enable redirect from basePath to indexPath
            app.UseMiddleware <RedirectMiddleware>(config.BaseRoute, config.IndexPath);

            // Serve indexPath via middleware
            app.UseMiddleware <SwaggerUiMiddleware>(config);

            var options = new FileServerOptions();

            options.RequestPath        = $"/{config.BaseRoute}";
            options.EnableDefaultFiles = false;
            options.StaticFileOptions.ContentTypeProvider = new FileExtensionContentTypeProvider();

            options.FileProvider = new EmbeddedFileProvider(typeof(SwaggerUiBuilderExtensions).GetTypeInfo().Assembly,
                                                            "Swashbuckle.SwaggerUi.bower_components.swagger_ui.dist");

            app.UseFileServer(options);

            return(app);
        }
Exemple #2
0
        public static void Register(HttpConfiguration config)
        {
            Swashbuckle.Bootstrapper.Init(config);

            SwaggerSpecConfig.Customize(c =>
            {
                c.ResolveTargetVersionUsing((req) => "2.0");

                c.IgnoreObsoleteActions();

                c.PolymorphicType <Product>(pc => pc
                                            .DiscriminateBy(p => p.Type)
                                            .SubType <Book>()
                                            .SubType <Album>()
                                            .SubType <Service>(sc => sc
                                                               .SubType <Shipping>()
                                                               .SubType <Packaging>()));

                c.OperationFilter <AddStandardResponseCodes>();
                c.OperationFilter <AddAuthResponseCodes>();

                c.IncludeXmlComments(GetXmlCommentsPath());
            });

            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams    = true;
                c.DocExpansion           = DocExpansion.List;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.InjectJavaScript(typeof(SwaggerConfig).Assembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
                c.InjectStylesheet(typeof(SwaggerConfig).Assembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");
            });
        }
Exemple #3
0
        public static void Register(HttpConfiguration config)
        {
            Swashbuckle.Bootstrapper.Init(config);

            //     config.Routes.MapHttpRoute(
            //    "swagger_versioned_api_docs",
            //    "swagger/{apiVersion}/api-docs/{resourceName}",
            //    new { resourceName = RouteParameter.Optional },
            //    null,
            //    new SwaggerSpecHandler());

            //config.Routes.MapHttpRoute(
            //    "swagger_api_docs",
            //    "swagger/api-docs/{resourceName}",
            //    new { resourceName = RouteParameter.Optional },
            //    null,
            //    new SwaggerSpecHandler());

            SwaggerSpecConfig.Customize(c =>
            {
                c.IgnoreObsoleteActions();
                c.GroupDeclarationsBy(ResolveResourceName);
                c.ResolveBasePathUsing(ResolveBasePath);
                c.IncludeXmlComments(HostingEnvironment.MapPath("~/App_Data/Northwind.Api.xml"));
            });

            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams = true;
                c.DocExpansion        = DocExpansion.List;
                //var ass  = Assembly.GetExecutingAssembly();
                //string[] names = ass.GetManifestResourceNames();
                c.CustomRoute("index.html", Assembly.GetExecutingAssembly(), "Northwind.Api.Swaggerui.index.html");
            });
        }
Exemple #4
0
        public static void Customize()
        {
            SwaggerSpecConfig.Customize(c =>
            {
                c.IgnoreObsoleteActions = true;

                c.SubTypesOf <Product>()
                .Include <Book>()
                .Include <Album>()
                .Include <Service>();

                c.SubTypesOf <Service>()
                .Include <Shipping>()
                .Include <Packaging>();

                c.PostFilter <AddStandardErrorCodes>();
                c.PostFilter <AddAuthorizationErrorCodes>();
                c.OperationFilter <ApplyCustomResponseTypes>();

                // Uncomment below to support documentation from Xml Comments
                // c.PostFilter(new ExtractXmlComments());
            });

            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams    = true;
                c.DocExpansion           = DocExpansion.List;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.AddOnCompleteScript(typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.SwaggerExtensions.onComplete.js");
                c.AddStylesheet(typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.SwaggerExtensions.customStyles.css");
            });
        }
        public void EnableSwaggerUi(
            string routeTemplate,
            Action<SwaggerUiConfig> configure = null)
        {
            var config = new SwaggerUiConfig(_discoveryPaths, _rootUrlResolver);
            if (configure != null) configure(config);

            _httpConfig.Routes.MapHttpRoute(
                name: "swagger_ui",
                routeTemplate: routeTemplate,
                defaults: null,
                constraints: new { assetPath = @".+" },
                handler: new SwaggerUiHandler(config)
            );

            if (routeTemplate == DefaultRouteTemplate)
            {
                _httpConfig.Routes.MapHttpRoute(
                    name: "swagger_ui_shortcut",
                    routeTemplate: "swagger",
                    defaults: null,
                    constraints: null,
                    handler: new RedirectHandler(_rootUrlResolver, "swagger/ui/index"));
            }
        }
Exemple #6
0
        public static void EnableAzureAdB2cOAuth2(this SwaggerUiConfig c, string clientId, string policyName, string clientSecret = null, string realm = null, string appName = "Swagger UI", bool enableDiscoveryUrlSelector = true, IDictionary <string, string> additionalParameters = null)
        {
            var additionalParams = new Dictionary <string, string>
            {
                { "p", policyName },
                { "response_mode", "fragment" }
            };

            if (additionalParameters != null)
            {
                foreach (var additionalParameter in additionalParameters)
                {
                    additionalParams.Add(additionalParameter.Key, additionalParameter.Value);
                }
            }
            c.EnableOAuth2Support(
                clientId,
                clientSecret,
                realm,
                appName,
                additionalQueryStringParams: additionalParams
                );
            if (enableDiscoveryUrlSelector)
            {
                c.EnableDiscoveryUrlSelector();
            }
        }
Exemple #7
0
        public void Setup()
        {
            SetUpDefaultRouteFor <ProductsController>();

            _swaggerSpecConfig = new SwaggerSpecConfig();
            _swaggerUiConfig   = new SwaggerUiConfig();
            Handler            = new SwaggerUiHandler(_swaggerSpecConfig, _swaggerUiConfig);
        }
Exemple #8
0
        private bool RequestIsForInjectedResource(string routePath, SwaggerUiConfig swaggerUiConfig, out InjectedResourceDescriptor injectedResourceDescriptor)
        {
            injectedResourceDescriptor = swaggerUiConfig.CustomScripts
                                         .Union(swaggerUiConfig.CustomStylesheets)
                                         .FirstOrDefault(desc => desc.RelativePath == routePath);

            return(injectedResourceDescriptor != null);
        }
        private void SetUpHandler(Action <SwaggerUiConfig> configure = null)
        {
            var swaggerUiConfig = new SwaggerUiConfig(new[] { "swagger/docs/v1" }, SwaggerDocsConfig.DefaultRootUrlResolver);

            configure?.Invoke(swaggerUiConfig);

            Handler = new SwaggerUiHandler(swaggerUiConfig);
        }
Exemple #10
0
        public void WhenCallingDocumentTitleFromCurrentAssemblyItShouldSetupCorrectDocumentTitle()
        {
            var sc = new SwaggerUiConfig(new string[0], _ => "");

            sc.DocumentTitleFromCurrentAssembly();
            var templateParams = (Dictionary <string, string>)sc.GetType().GetField("_templateParams", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(sc);

            templateParams["%(DocumentTitle)"].Should().Be("Swagger UI - LSL.Swashbuckle.Tests");
        }
Exemple #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="source"></param>
        /// <param name="httpConfiguration"></param>
        /// <param name="configurator"></param>
        /// <returns></returns>
        public static SwaggerUiConfig EnableCustomData(this SwaggerUiConfig source, HttpConfiguration httpConfiguration, Action <CustomDataBuilder> configurator)
        {
            var configuration = new CustomDataBuilder();

            configurator?.Invoke(configuration);
            const string routeTemplate = "lsl-swaggerui-custom-data";

            httpConfiguration.Routes.MapHttpRoute(routeTemplate, routeTemplate, null, null, new CustomDataHandler(configuration));
            source.InjectJavaScript(typeof(SwashbuckleExtensions).Assembly, "lsl-swaggerui-custom-data.js");

            return(source);
        }
Exemple #12
0
        public void WhenCallingEnableCustomDataItShouldSetupTheExpectedRouteAndHandler()
        {
            var httpConfiguration = new HttpConfiguration();
            var sc = new SwaggerUiConfig(new string[0], _ => "");

            sc.EnableCustomData(httpConfiguration, null);

            httpConfiguration.Routes.Count.Should().Be(1);
            var route = httpConfiguration.Routes[0];

            route.RouteTemplate.Should().Be("lsl-swaggerui-custom-data");
            route.Handler.Should().BeOfType <CustomDataHandler>();
        }
 public void Register(IAppHost appHost)
 {
     if (_swaggerUiConfig == null)
     {
         _swaggerUiConfig = new SwaggerUiConfig(appHost.Config);
     }
     else
     {
         _swaggerUiConfig.HostConfig = appHost.Config;
     }
     appHost.Config.RawHttpHandlers.Add(ResolveHttpHandler);
     appHost.GetPlugin <MetadataFeature>()
     .AddPluginLink(SwaggerUiHandler.RESOURCE_PATH + "/", "Swagger UI");
 }
Exemple #14
0
        public void FixtureSetup()
        {
            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams    = true;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.DocExpansion           = DocExpansion.Full;
                c.InjectJavaScript(GetType().Assembly, "Swashbuckle.Tests.Support.testScript1.js");
                c.InjectJavaScript(GetType().Assembly, "Swashbuckle.Tests.Support.testScript2.js");
                c.InjectStylesheet(GetType().Assembly, "Swashbuckle.Tests.Support.testStyles1.css");
                c.InjectStylesheet(GetType().Assembly, "Swashbuckle.Tests.Support.testStyles2.css");
            });

            _handler = new SwaggerUiHandler();
        }
        public void FixtureSetup()
        {
            SwaggerUiConfig.Customize(c =>
            {
                c.ApiKey                 = "TestApiKey";
                c.ApiKeyName             = "TestApiKeyName";
                c.SupportHeaderParams    = true;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.DocExpansion           = DocExpansion.Full;
                c.AddOnCompleteScript(GetType().Assembly, "Swashbuckle.Tests.Support.testScript1.js");
                c.AddOnCompleteScript(GetType().Assembly, "Swashbuckle.Tests.Support.testScript2.js");
            });

            _routeHandler = new SwaggerUiRouteHandler();
        }
Exemple #16
0
        public static string GetParamType(this ApiMemberAttribute attr, SwaggerUiConfig config, string type, string verb)
        {
            if (attr.ParameterType != null)
            {
                return(attr.ParameterType);
            }

            var op            = config.HostConfig.MetadataMap.FirstOrDefault().Value.GetOperationByOpName(type);
            var isRequestType = true;

            var defaultType = verb == HttpMethods.Post || verb == HttpMethods.Put
                ? "form"
                : "query";

            return(!isRequestType ? defaultType : GetRequestParamType(op, attr.Name, defaultType));
        }
Exemple #17
0
        public void FixtureSetup()
        {
            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams    = true;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.DocExpansion           = DocExpansion.Full;

                var resourceAssembly = typeof(Dummy.SwaggerConfig).Assembly;
                c.InjectJavaScript(resourceAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
                c.InjectJavaScript(resourceAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript2.js");
                c.InjectStylesheet(resourceAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");
                c.InjectStylesheet(resourceAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles2.css");
            });

            _handler = new SwaggerUiHandler();
        }
        private static void ConfigureSwagger(IAppBuilder app)
        {
            var http = new HttpConfiguration();

            var swaggerUiConfig = new SwaggerUiConfig(new[] { "v2" }, m => "");

            swaggerUiConfig.EnableDiscoveryUrlSelector();

            //swaggerUiConfig.EnableApiKeySupport("Authorization", "header");
            //swaggerUiConfig.InjectJavaScript(typeof(Application).Assembly, "BlackCoffeeTalk.Bootstrap.ClientResources.swaggerExtensions.js");

            http.Routes.MapHttpRoute("swagger_ui_shortcut", "", null, null, new RedirectHandler(r => r.RequestUri.AbsoluteUri.TrimEnd('/'), "index"));
            http.Routes.MapHttpRoute("swagger_ui", "{*assetPath}", null, new { assetPath = ".+" }, new SwaggerUiHandler(swaggerUiConfig));


            app.UseWebApi(http);
        }
        public static void Register()
        {
            Swashbuckle.Bootstrapper.Init(GlobalConfiguration.Configuration);

            // NOTE: If you want to customize the generated swagger or UI, use SwaggerSpecConfig and/or SwaggerUiConfig here ...
            SwaggerSpecConfig.Customize(c =>
            {
                //c.IgnoreObsoleteActions();
                c.OperationFilter <AddStandardResponseCodes>();
                c.IncludeXmlComments(GetXmlCommentsPath());
            });

            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams = true;
                c.DocExpansion        = DocExpansion.Full;
                c.InjectJavaScript(typeof(SwaggerConfig).Assembly, "Microbrewit.Api.Scripts.test.js");
            });
        }
Exemple #20
0
        public static void Customize()
        {
            SwaggerSpecConfig.Customize(c =>
            {
                c.PostFilter(new AddErrorCodeFilter(200, "It's all good!"));
                c.PostFilter(new AddErrorCodeFilter(400, "Something's up!"));
                // uncomment this to parse documentation field when using XmlCommentDocumentationProvider
                //c.PostFilter(new AddXmlCommentsParsingFilter());
            });

            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams    = true;
                c.DocExpansion           = DocExpansion.Full;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.AddOnCompleteScript(typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.swagger_ui.ext.onComplete.js");
                c.AddStylesheet(typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.swagger_ui.ext.embeddedStylesheet.css");
            });
        }
Exemple #21
0
        public static void Register(HttpConfiguration config)
        {
            Bootstrapper.Init(config);

            SwaggerSpecConfig.Customize(c =>
            {
                c.ResolveTargetVersionUsing((req) => "2.0");

                c.IgnoreObsoleteActions();

                c.PolymorphicType <Product>(pc => pc
                                            .DiscriminateBy(p => p.Type)
                                            .SubType <Book>()
                                            .SubType <Album>()
                                            .SubType <Service>(sc => sc
                                                               .SubType <Shipping>()
                                                               .SubType <Packaging>()));

                c.OperationFilter <AddStandardResponseCodes>();
                c.OperationFilter <AddAuthorizationResponseCodes>();

                c.IncludeXmlComments(GetXmlCommentsPath());
            });

            SwaggerUiConfig.Customize(c =>
            {
                c.SupportHeaderParams    = true;
                c.DocExpansion           = DocExpansion.List;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.InjectJavaScript(typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.SwaggerExtensions.customScript.js");
                c.InjectStylesheet(typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.SwaggerExtensions.customStyles.css");

                // Experimenting with a custom routing feature - to override index.html and/or serve up additional content
                c.CustomRoute("index.html", typeof(SwaggerConfig).Assembly, "Swashbuckle.TestApp.SwaggerExtensions.index.html");
            });
        }
Exemple #22
0
 public static SwaggerUiConfig DocumentTitleFromCurrentAssembly(this SwaggerUiConfig source)
 {
     source.DocumentTitle($"Swagger UI - {GetCallingAssembly().GetName().Name}");
     return(source);
 }
 public void Setup()
 {
     _swaggerUiConfig = new SwaggerUiConfig();
     Handler          = new SwaggerUiHandler(_swaggerUiConfig);
 }
Exemple #24
0
 public void ConfigureSwaggerUi(SwaggerUiConfig config)
 {
     logger.Debug("Swagger ui config completed ...");
 }
 /// <summary>
 /// Configures the UI elements / front end functionality of swagger
 /// </summary>
 /// <param name="uiConfig"></param>
 private static void ConfigureSwaggerUI(SwaggerUiConfig uiConfig)
 {
     uiConfig.DocExpansion(DocExpansion.None);
     uiConfig.DisableValidator();
     uiConfig.EnableDiscoveryUrlSelector();
 }
Exemple #26
0
        public static void Register()
        {
            Swashbuckle.Bootstrapper.Init(GlobalConfiguration.Configuration);

            // NOTE: If you want to customize the generated swagger or UI, use SwaggerSpecConfig and/or SwaggerUiConfig here ...
            SwaggerSpecConfig.Customize(c =>
            {
                c.IgnoreObsoleteActions();

                c.ApiInfo(new Info
                {
                    Title       = "Welcome to SSO Architecture Reference API Interactive Documentation",
                    Description = "Architecture Reference API is a reference for restful service which cater's services to EXTJS and AngularJS Sample application created for TCCC-19.",
                    Contact     = "*****@*****.**"
                });


                c.IncludeXmlComments(GetXmlCommentsPath());

                c.OperationFilter <AddStandardResponseCodes>();
                c.OperationFilter <AddAuthResponseCodes>();
                c.OperationFilter <AddOAuth2Scopes>();

                c.Authorization("oauth2", new Authorization
                {
                    Type   = "oauth2",
                    Scopes = new List <Scope>
                    {
                        new Scope {
                            ScopeId = "default", Description = "Use this scope to perform default operations on the API"
                        }
                    },
                    GrantTypes = new GrantTypes
                    {
                        ImplicitGrant = new ImplicitGrant
                        {
                            LoginEndpoint = new LoginEndpoint
                            {
                                Url = Constants.AuthorizationServer.OAuth2AuthorizeEndpoint
                            },
                            TokenName = "access_token"
                        }
                    }
                });
            });

            SwaggerUiConfig.Customize(c =>
            {
                var thisAssembly = typeof(SwaggerConfig).Assembly;

                c.SupportHeaderParams    = true;
                c.DocExpansion           = DocExpansion.List;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };

                //Inject custom Javascript and Css Style's for Swagger
                c.InjectJavaScript(thisAssembly, "SSOWebApi.SwaggerExtensions.SwaggerScripts.js");
                c.InjectJavaScript(thisAssembly, "SSOWebApi.SwaggerExtensions.SwaggerOAuth.js");
                c.InjectStylesheet(thisAssembly, "SSOWebApi.SwaggerExtensions.SwaggerStyles.css");

                //Enable OAuth on the Swagger UI
                c.EnableOAuth2Support("implicit-SSOWebApi", "SSOWebApi", "SSOWebApi");
            });
        }
Exemple #27
0
 private static void ConfigureUi(SwaggerUiConfig config)
 {
     config.DocExpansion(DocExpansion.List);
     config.DisableValidator();
 }
Exemple #28
0
 public static void EnableAzureAdB2cOAuth2(this SwaggerUiConfig c, IDictionary <string, string> additionalParameters)
 {
     c.EnableAzureAdB2cOAuth2(B2cGlobalSwaggerConfig.ClientId, B2cGlobalSwaggerConfig.Policy, B2cGlobalSwaggerConfig.AppName, B2cGlobalSwaggerConfig.ClientSecret, additionalParameters: additionalParameters);
 }
Exemple #29
0
 public static void EnableAzureAdB2cOAuth2(this SwaggerUiConfig c)
 {
     c.EnableAzureAdB2cOAuth2(B2cGlobalSwaggerConfig.ClientId, B2cGlobalSwaggerConfig.Policy, B2cGlobalSwaggerConfig.AppName, B2cGlobalSwaggerConfig.ClientSecret);
 }
Exemple #30
0
 public SwaggerResourcesService(SwaggerUiConfig config, string servicePath)
 {
     _config      = config;
     _servicePath = servicePath;
 }
Exemple #31
0
        public static void Register(HttpConfiguration config)
        {
            SwaggerSpecConfig.Customize(c =>
            {
                c.IgnoreObsoleteActions();

                //c.SupportMultipleApiVersions(
                //    new[] { "1.0", "2.0" },
                //    ResolveVersionSupportByRouteConstraint);

                //c.PolymorphicType<Animal>(ac => ac
                //    .DiscriminateBy(a => a.Type)
                //    .SubType<Kitten>());

                c.OperationFilter <AddStandardResponseCodes>();
                c.OperationFilter <AddAuthResponseCodes>();
                c.OperationFilter <AddOAuth2Scopes>();

                c.IncludeXmlComments(GetXmlCommentsPath());

                c.ApiInfo(new Info
                {
                    Title       = "Swashbuckle Dummy",
                    Description = "For testing and experimenting with Swashbuckle features",
                    Contact     = "*****@*****.**"
                });

                c.Authorization("oauth2", new Authorization
                {
                    Type   = "oauth2",
                    Scopes = new List <Scope>
                    {
                        new Scope {
                            ScopeId = "products.read", Description = "View products"
                        },
                        new Scope {
                            ScopeId = "products.manage", Description = "Manage products"
                        }
                    },
                    GrantTypes = new GrantTypes
                    {
                        ImplicitGrant = new ImplicitGrant
                        {
                            LoginEndpoint = new LoginEndpoint
                            {
                                Url = "http://petstore.swagger.wordnik.com/api/oauth/dialog"
                            },
                            TokenName = "access_token"
                        }
                    }
                });
                c.SetRootPath("panel");
                c.SetForceUseSsl(true);
            });

            SwaggerUiConfig.Customize(c =>
            {
                var thisAssembly = typeof(SwaggerConfig).Assembly;

                c.SupportHeaderParams    = true;
                c.DocExpansion           = DocExpansion.List;
                c.SupportedSubmitMethods = new[] { HttpMethod.Get, HttpMethod.Post, HttpMethod.Put, HttpMethod.Head };
                c.EnableDiscoveryUrlSelector();
                //c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
                //c.InjectStylesheet(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");

                c.EnableOAuth2Support("test-client-id", "test-realm", "Swagger UI");
            });
            Swashbuckle.Bootstrapper.Init(config);
        }