From ab7a72c3d544d97f392e5cd34b89dacbab46199f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Tam=C3=A1si?= Date: Wed, 28 Mar 2018 16:05:28 +0200 Subject: [PATCH] Make option creation and provider creation public --- .../Application/SwaggerDocsConfig.cs | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/Swashbuckle.Core/Application/SwaggerDocsConfig.cs b/Swashbuckle.Core/Application/SwaggerDocsConfig.cs index 64d21e080..6102b9277 100644 --- a/Swashbuckle.Core/Application/SwaggerDocsConfig.cs +++ b/Swashbuckle.Core/Application/SwaggerDocsConfig.cs @@ -238,8 +238,26 @@ public void CustomProvider(Func customProvid internal ISwaggerProvider GetSwaggerProvider(HttpRequestMessage swaggerRequest) { - var httpConfig = swaggerRequest.GetConfiguration(); + return GetSwaggerProvider(swaggerRequest.GetConfiguration()); + } + + public ISwaggerProvider GetSwaggerProvider(HttpConfiguration httpConfig) + { + var options = GetSwaggerGeneratorOptions(); + + var defaultProvider = new SwaggerGenerator( + httpConfig.Services.GetApiExplorer(), + httpConfig.SerializerSettingsOrDefault(), + _versionInfoBuilder.Build(), + options); + + return (_customProviderFactory != null) + ? _customProviderFactory(defaultProvider) + : defaultProvider; + } + public SwaggerGeneratorOptions GetSwaggerGeneratorOptions() + { var securityDefintitions = _securitySchemeBuilders.Any() ? _securitySchemeBuilders.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Build()) : null; @@ -254,8 +272,8 @@ internal ISwaggerProvider GetSwaggerProvider(HttpRequestMessage swaggerRequest) modelFilters.Insert(0, new ApplyXmlTypeComments(xmlDoc)); operationFilters.Insert(0, new ApplyXmlActionComments(xmlDoc)); } - - var options = new SwaggerGeneratorOptions( + + return new SwaggerGeneratorOptions( versionSupportResolver: _versionSupportResolver, schemes: _schemes, securityDefinitions: securityDefintitions, @@ -274,16 +292,6 @@ internal ISwaggerProvider GetSwaggerProvider(HttpRequestMessage swaggerRequest) documentFilters: _documentFilters.Select(factory => factory()).ToList(), conflictingActionsResolver: _conflictingActionsResolver ); - - var defaultProvider = new SwaggerGenerator( - httpConfig.Services.GetApiExplorer(), - httpConfig.SerializerSettingsOrDefault(), - _versionInfoBuilder.Build(), - options); - - return (_customProviderFactory != null) - ? _customProviderFactory(defaultProvider) - : defaultProvider; } internal string GetRootUrl(HttpRequestMessage swaggerRequest)