Esempio n. 1
0
        public static IApplicationBuilder UseMySwagger(this IApplicationBuilder app, Action <MySwaggerOptions> setupAction)
        {
            app.UseSwagger(c =>
            {
                c.PreSerializeFilters.Add((swagger, httpReq) => swagger.Host = httpReq.Host.Value);
            });

            var options = new MySwaggerOptions();

            setupAction(options);

            app.UseSwaggerUI(c =>
            {
                foreach (var doc in options.Docs)
                {
                    c.SwaggerEndpoint($"/swagger/{doc}/swagger.json", doc);
                }

                if (options.OAuthAdditionalQueryStringParams != null)
                {
                    c.OAuthAdditionalQueryStringParams(options.OAuthAdditionalQueryStringParams);
                }
                c.OAuthClientId(options.OAuthClientId);
                c.OAuthClientSecret(options.OAuthClientSecret);
            });

            return(app);
        }
Esempio n. 2
0
        public static IServiceCollection AddMySwagger(this IServiceCollection services, Action <MySwaggerOptions> setupAction)
        {
            var options = new MySwaggerOptions();

            setupAction(options);

            services.AddSwaggerGen(c =>
            {
                foreach (var doc in options.Docs)
                {
                    c.SwaggerDoc(doc, new Info
                    {
                        Title   = $"{options.ApiTitle}-{doc}",
                        Version = "v1"
                    });
                }

                foreach (var xmlFile in options.XmlFiles)
                {
                    IncludeXmlCommentsIfExist(c, xmlFile);
                }

                c.EnableAnnotations();
                c.DescribeAllEnumsAsStrings();
                c.OperationFilter <FormFileOperationFilter>();
                c.OperationFilter <AppendAuthorizeToSummaryOperationFilter>();
                c.OperationFilter <SummaryFromOperationFilter>();

                c.AddSecurityDefinition("oauth2", options.OAuth2Scheme);

                c.DocInclusionPredicate((s, description) =>
                {
                    if (options.Docs.Contains(s))
                    {
                        return(description.GroupName == s);
                    }

                    if (string.IsNullOrEmpty(description.GroupName))
                    {
                        return(true);
                    }

                    return(description.GroupName != s);
                });

                c.OperationFilter <SecurityRequirementsOperationFilter>();
            });

            return(services);
        }