Exemplo n.º 1
0
 public void ConfigureSwagger(SwaggerDocumentSettings settings)
 {
     settings.OperationProcessors.Add(new OperationSecurityScopeProcessor("JWT"));
     settings.DocumentProcessors.Add(new SecurityDefinitionAppender("JWT", Enumerable.Empty <string>(), new SwaggerSecurityScheme {
         Type = SwaggerSecuritySchemeType.ApiKey, Name = "Authorization", Description = "Bearer token", In = SwaggerSecurityApiKeyLocation.Header
     }));
 }
Exemplo n.º 2
0
 private void ConfigureSwaggerDocumentSettings(
     SwaggerDocumentSettings document)
 {
     document.Title       = "PowerDingsbums";
     document.Description = "PowerDingsbums";
     document.Version     = "1.0";
     //document.DefaultPropertyNameHandling = NJsonSchema.PropertyNameHandling.CamelCase;
     // Add custom document processors, etc.
     //https://docs.microsoft.com/en-us/connectors/custom-connectors/create-web-api-connector
     // test this by creating a Connector
     document.DocumentProcessors.Add(
         new SecurityDefinitionAppender(
             "AAD",
             new string[] { "Dingsbums" },
             new SwaggerSecurityScheme {
         Type             = SwaggerSecuritySchemeType.OAuth2,
         Flow             = SwaggerOAuth2Flow.AccessCode,
         Name             = "AAD",
         AuthorizationUrl = "https://login.windows.net/common/oauth2/authorize",
         TokenUrl         = "https://login.windows.net/common/oauth2/token",
         Description      = "AAD"
     }));
     // Post process the generated document
     //document.PostProcess = d => d.Info.Title = "Hello world!";
 }
        /// <summary>Adds a document to the registry.</summary>
        /// <param name="registry">The registry.</param>
        /// <param name="configure">The configure action.</param>
        /// <returns>The registry.</returns>
        public static ISwaggerDocumentBuilder AddSwaggerDocument(this ISwaggerDocumentBuilder registry, Action <SwaggerDocumentSettings> configure = null)
        {
            var settings = new SwaggerDocumentSettings();

            settings.SchemaType = SchemaType.Swagger2;

            configure?.Invoke(settings);

            var generator = new AspNetCoreToSwaggerGenerator(settings, settings.SchemaGenerator ?? new SwaggerJsonSchemaGenerator(settings));

            return(((SwaggerDocumentRegistry)registry).AddDocument(settings.DocumentName, generator));
        }
        /// <summary>Adds services required for Swagger 2.0 generation (change document settings to generate OpenAPI 3.0).</summary>
        /// <param name="serviceCollection">The <see cref="IServiceCollection"/>.</param>
        /// <param name="configure">Configure the document.</param>
        public static IServiceCollection AddSwaggerDocument(this IServiceCollection serviceCollection, Action <SwaggerDocumentSettings, IServiceProvider> configure = null)
        {
            serviceCollection.AddSingleton(services =>
            {
                var settings        = new SwaggerDocumentSettings();
                settings.SchemaType = SchemaType.Swagger2;

                configure?.Invoke(settings, services);

                if (settings.PostProcess != null)
                {
                    var processor = new ActionDocumentProcessor(context => settings.PostProcess(context.Document));
                    settings.DocumentProcessors.Add(processor);
                }

                foreach (var documentProcessor in services.GetRequiredService <IEnumerable <IDocumentProcessor> >())
                {
                    settings.DocumentProcessors.Add(documentProcessor);
                }

                foreach (var operationProcessor in services.GetRequiredService <IEnumerable <IOperationProcessor> >())
                {
                    settings.OperationProcessors.Add(operationProcessor);
                }

                var schemaGenerator = settings.SchemaGenerator ?? new SwaggerJsonSchemaGenerator(settings);
                var generator       = new AspNetCoreToSwaggerGenerator(settings, schemaGenerator);

                return(new SwaggerDocumentRegistration(settings.DocumentName, generator));
            });

            var descriptor = serviceCollection.SingleOrDefault(d => d.ServiceType == typeof(SwaggerDocumentProvider));

            if (descriptor == null)
            {
                serviceCollection.AddSingleton <SwaggerDocumentProvider>();
                serviceCollection.AddSingleton <IConfigureOptions <MvcOptions>, SwaggerConfigureMvcOptions>();

                // Used by UseDocumentProvider CLI setting
                serviceCollection.AddSingleton <ISwaggerDocumentProvider>(s => s.GetRequiredService <SwaggerDocumentProvider>());

                // Used by the Microsoft.Extensions.ApiDescription tool
                serviceCollection.AddSingleton <ApiDescription.IDocumentProvider>(s => s.GetRequiredService <SwaggerDocumentProvider>());
            }

            return(serviceCollection);
        }