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); }
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); }