public static void Init(TestContext testContext) { var options = new SwaggerGeneratorSettings(); options.DocInclusionPredicate = (version, api) => true; options.OperationFilters.Add(new RemoveReadOnlyFromUriParametersOperationFilter()); options.OperationFilters.Add(new RemoveBindNoneFromUriParametersOperationFilter()); options.OperationFilters.Add(new AddAsObjectAnnotationOperationFilter()); options.OperationFilters.Add(new HandleGridViewDataSetReturnType()); options.SwaggerDocs.Add("v1", new Info() { Title = "Test API", Version = "v1" }); var serviceCollection = new ServiceCollection() .AddSingleton <ObjectPoolProvider, DefaultObjectPoolProvider>() .AddSingleton <IHostingEnvironment, HostingEnvironment>() .AddLogging(); serviceCollection.AddMvc(setup => { setup.Conventions.Add(new ApiExplorerVisibilityEnabledConvention()); }) .AddApplicationPart(typeof(CompaniesController).Assembly); var serviceProvider = serviceCollection.BuildServiceProvider(); var apiDescriptionGroupCollectionProvider = serviceProvider.GetService <IApiDescriptionGroupCollectionProvider>(); var schemaRegistryFactory = new SchemaRegistryFactory(new JsonSerializerSettings(), new SchemaRegistrySettings()); var generator = new SwaggerGenerator(apiDescriptionGroupCollectionProvider, schemaRegistryFactory, options); document = generator.GetSwagger("v1"); }
internal ISwaggerProvider CreateSwaggerProvider(IServiceProvider serviceProvider) { var swaggerGeneratorSettings = CreateSwaggerGeneratorSettings(serviceProvider); var schemaRegistrySettings = CreateSchemaRegistrySettings(serviceProvider); // Instantiate & add the XML comments filters here so they're executed before any custom // filters AND so they can share the same XPathDocument (perf. optimization) foreach (var xmlDocFactory in _xmlDocFactories) { var xmlDoc = xmlDocFactory(); swaggerGeneratorSettings.OperationFilters.Insert(0, new XmlCommentsOperationFilter(xmlDoc)); schemaRegistrySettings.SchemaFilters.Insert(0, new XmlCommentsSchemaFilter(xmlDoc)); } var schemaRegistryFactory = new SchemaRegistryFactory( serviceProvider.GetRequiredService <IOptions <MvcJsonOptions> >().Value.SerializerSettings, schemaRegistrySettings ); return(new SwaggerGenerator( serviceProvider.GetRequiredService <IApiDescriptionGroupCollectionProvider>(), schemaRegistryFactory, swaggerGeneratorSettings )); }
public SwaggerDocument GetSwagger(string documentName, string host = null, string basePath = null, string[] schemes = null) { var metadatas = _serviceProvider.GetService <MicroServiceMetadatas>(); SchemaRegistryFactory schemaRegistryFactory = new SchemaRegistryFactory(new JsonSerializerSettings(), new SchemaRegistrySettings()); _schemaRegistry = schemaRegistryFactory.Create(); IDictionary <string, PathItem> paths = metadatas.RouteActionMetadatas .GroupBy(m => m.RelativePath) .ToDictionary(m => "/" + m.First().RelativePath, m => new PathItem { Get = CreateOperation(m, HttpMethods.Get), Post = CreateOperation(m, HttpMethods.Post), Put = CreateOperation(m, HttpMethods.Put), Delete = CreateOperation(m, HttpMethods.Delete) }); var swaggerDoc = new SwaggerDocument { Info = new Info(), Host = host, BasePath = basePath, Schemes = schemes, Paths = paths, Definitions = _schemaRegistry.Definitions, SecurityDefinitions = null, Security = null }; return(swaggerDoc); }
public static void Init(TestContext testContext) { var knownTypesOptions = Options.Create(new DotvvmApiOptions()); knownTypesOptions.Value.AddKnownType(typeof(Company <string>)); var options = new SwaggerGeneratorOptions { DocInclusionPredicate = (version, api) => true, OperationFilters = { new RemoveReadOnlyFromUriParametersOperationFilter(), new RemoveBindNoneFromUriParametersOperationFilter(), new AddAsObjectOperationFilter(knownTypesOptions) }, DocumentFilters = { new HandleKnownTypesDocumentFilter(knownTypesOptions) }, SwaggerDocs = { { "v1", new Info() { Title = "Test API", Version = "v1" } } } }; var serviceCollection = new ServiceCollection() .AddSingleton <ObjectPoolProvider, DefaultObjectPoolProvider>() .AddSingleton <IHostingEnvironment, HostingEnvironment>() .AddSingleton <DiagnosticSource>(p => new DiagnosticListener("test")) .AddLogging(); serviceCollection.AddMvc(setup => setup.Conventions.Add(new ApiExplorerVisibilityEnabledConvention())) .AddApplicationPart(typeof(CompaniesController).Assembly); var serviceProvider = serviceCollection.BuildServiceProvider(); var apiDescriptionGroupCollectionProvider = serviceProvider.GetRequiredService <IApiDescriptionGroupCollectionProvider>(); var schemaSettings = new SchemaRegistryOptions() { SchemaFilters = { new AddTypeToModelSchemaFilter() } }; var schemaRegistryFactory = new SchemaRegistryFactory(new JsonSerializerSettings(), schemaSettings); var generator = new SwaggerGenerator(apiDescriptionGroupCollectionProvider, schemaRegistryFactory, options); document = generator.GetSwagger("v1"); }
private static ISwaggerProvider CreateSwaggerProvider(IServiceProvider serviceProvider) { var swaggerGenOptions = serviceProvider.GetRequiredService <IOptions <SwaggerGenOptions> >().Value; var mvcJsonOptions = serviceProvider.GetRequiredService <IOptions <MvcJsonOptions> >().Value; var apiDescriptionsProvider = serviceProvider.GetRequiredService <IApiDescriptionGroupCollectionProvider>(); var schemaRegistryFactory = new SchemaRegistryFactory( mvcJsonOptions.SerializerSettings, swaggerGenOptions.GetSchemaRegistryOptions(serviceProvider) ); return(new SwaggerProvider( apiDescriptionsProvider, schemaRegistryFactory, swaggerGenOptions.GetSwaggerProviderOptions(serviceProvider) )); }