/// <summary>
        /// 启用Api分组
        /// </summary>
        /// <typeparam name="TEnum">枚举类型</typeparam>
        /// <param name="options">SwaggerUI选项</param>
        public static void EnableApiGroup <TEnum>(this SwaggerUIOptions options) where TEnum : struct
        {
            var type = typeof(TEnum);

            if (!type.IsEnum)
            {
                return;
            }
            type.GetFields().Skip(1).ToList().ForEach(x =>
            {
                var info = x.GetCustomAttributes(typeof(SwaggerApiGroupInfoAttribute), false)
                           .OfType <SwaggerApiGroupInfoAttribute>().FirstOrDefault();
                var url  = $"/swagger/{x.Name}/swagger.json";
                var name = info != null ? info.Title : x.Name;
                if (options.ExistsApiVersion(name, url))
                {
                    return;
                }
                options.SwaggerEndpoint($"/swagger/{x.Name}/swagger.json", info != null ? info.Title : x.Name);
            });
            if (options.ExistsApiVersion("/swagger/NoGroup/swagger.json", "无分组"))
            {
                return;
            }
            options.SwaggerEndpoint("/swagger/NoGroup/swagger.json", "无分组");
        }
Пример #2
0
        public static void ConfigureUI(SwaggerUIOptions options)
        {
            options.SwaggerEndpoint($"/swagger/{SwaggerConstants.InvestorsGroup}/swagger.json", SwaggerConstants.InvestorsTitle);
            options.SwaggerEndpoint($"/swagger/{SwaggerConstants.AdministratorsGroup}/swagger.json", SwaggerConstants.AdministratorsTitle);
            options.SwaggerEndpoint($"/swagger/{SwaggerConstants.AnalyticsGroup}/swagger.json", SwaggerConstants.AnalyticsTitle);
            options.DocExpansion("list");

            options.InjectOnCompleteJavaScript("customizations/BearerAuth.js");
        }
        public static void SetupSwaggerUIOptions(this SwaggerUIOptions options)
        {
            options.DocumentTitle = "ProjectName BoundedContext Api V1 Docs";
            options.RoutePrefix   = "docs";
            options.SwaggerEndpoint("/docs/v1/json", "ProjectName BoundedContext Api V1 Docs");
            options.SwaggerEndpoint("/docs/admin-v1/json", "ProjectName BoundedContext Admin Api V1 Docs");
            options.IndexStream = () => Assembly.GetExecutingAssembly()
                                  .GetManifestResourceStream("BoundedContext.Api.Swagger.CustomUI.index.html");

            options.OAuthClientId("resourceowner");
            options.OAuthClientSecret("TPOAuthClientSecret");
            options.OAuthRealm("realm");
            options.OAuthAppName("BoundedContext");
        }
        private static void ConfigureSwaggerUI(SwaggerUIOptions options)
        {
            var name = "Restaurant.Api v1";
            var url  = "/swagger/v1/swagger.json";

            options.SwaggerEndpoint(url, name);
        }
 private static void AddSwaggerEndpointToUi(SwaggerUIOptions swaggerUIOptions, IEnumerable <SwaggerConfigurationModel> swaggerConfigurations)
 {
     foreach (var swaggerConfiguration in swaggerConfigurations)
     {
         swaggerUIOptions.SwaggerEndpoint($"/swagger/{swaggerConfiguration.ApiVersion}/swagger.json", $"{swaggerConfiguration.ApiName} {swaggerConfiguration.ApiVersion}");
     }
 }
Пример #6
0
        public static void SwaggerEndpoint(this SwaggerUIOptions options, IEnumerable <ServiceEntry> entries, string areaName)
        {
            var list       = new List <Info>();
            var assemblies = entries.Select(p => p.Type.Assembly).Distinct();

            foreach (var assembly in assemblies)
            {
                var version = assembly
                              .GetCustomAttributes(true)
                              .OfType <AssemblyFileVersionAttribute>().FirstOrDefault();

                var title = assembly
                            .GetCustomAttributes(true)
                            .OfType <AssemblyTitleAttribute>().FirstOrDefault();

                var des = assembly
                          .GetCustomAttributes(true)
                          .OfType <AssemblyDescriptionAttribute>().FirstOrDefault();

                if (version == null || title == null)
                {
                    continue;
                }

                var info = new Info()
                {
                    Title       = title.Title,
                    Version     = version.Version,
                    Description = des?.Description,
                };
                options.SwaggerEndpoint($"../swagger/{info.Title}/swagger.json", info.Title, areaName);
            }
        }
Пример #7
0
 private static void ConfigureSwaggerUI(SwaggerUIOptions options, IApiVersionDescriptionProvider provider)
 {
     foreach (var description in provider.ApiVersionDescriptions.Reverse())
     {
         options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
     }
 }
Пример #8
0
 private void SetupSwaggerUI(SwaggerUIOptions options)
 {
     options.SwaggerEndpoint(
         $"{appConfiguration.ServerAddress}/swagger/{appConfiguration.Version}/swagger.json",
         $"{appConfiguration.Name} API {appConfiguration.Version}"
         );
 }
 private static void AddSwaggerEndPoints(SwaggerUIOptions c, IEnumerable <SwaggerEndPointOptions> endPoints, string basePath)
 {
     foreach (var endPoint in endPoints)
     {
         c.SwaggerEndpoint($"{endPoint.Url}{basePath}", endPoint.Name);
     }
 }
Пример #10
0
        public static SwaggerUIOptions VersioningSwaggerEndpoints(this SwaggerUIOptions options,
                                                                  IApiVersionDescriptionProvider provider, string docDescriptionFormat, bool urlRelative)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            if (string.IsNullOrWhiteSpace(docDescriptionFormat))
            {
                throw new ArgumentNullException(nameof(docDescriptionFormat));
            }

            foreach (var description in provider.ApiVersionDescriptions)
            {
                var endPointUrl = $"{description.GroupName}/swagger.json";
                if (!urlRelative)
                {
                    endPointUrl = $"/{options.RoutePrefix}/{endPointUrl}";
                }

                options.SwaggerEndpoint(endPointUrl,
                                        string.Format(docDescriptionFormat, description.GroupName.ToUpperInvariant()));
            }

            return(options);
        }
Пример #11
0
        /// <inheritdoc />
        public void Configure(SwaggerUIOptions options)
        {
            if (options == default)
            {
                throw new ArgumentNullException(nameof(options));
            }

            foreach (var apiVersionDescription in _apiVersionDescriptionProvider.ApiVersionDescriptions)
            {
                var name = apiVersionDescription.GroupName;
                var url  = $"./swagger/{name}/swagger.json";
                options.SwaggerEndpoint(url, name);
            }

            options.RoutePrefix = _options.RoutePrefix;
            if (IsNullOrWhiteSpace(_options.Info?.Title))
            {
                return;
            }

            var sb = new StringBuilder(_options.Info.Title);

            if (!IsNullOrWhiteSpace(_options.Info?.Description))
            {
                sb.AppendLine();
                sb.Append(_options.Info.Description);
            }

            options.DocumentTitle = sb.ToString();
            if (_options.OAuthConfig != default)
            {
                options.OAuthConfigObject = _options.OAuthConfig;
            }
        }
Пример #12
0
 private static void SetupSwaggerUiOptions(SwaggerUIOptions options)
 {
     options.DisplayRequestDuration();
     options.DocumentTitle = typeof(Startup).Assembly.GetCustomAttribute <AssemblyProductAttribute>()?.Product;
     options.SwaggerEndpoint($"/swagger/{ApiVersions.V1}/swagger.json", ApiVersions.V1);
     options.RoutePrefix = "api/docs";
 }
Пример #13
0
 /// <summary>
 /// Configures swagger UI for this API
 /// </summary>
 public static void Configure(this SwaggerUIOptions c)
 {
     foreach (var v in GetVersions())
     {
         c.SwaggerEndpoint($"/swagger/{v}/swagger.json", $"Product API {v}");
     }
 }
Пример #14
0
 public static void UseSwaggerUI(SwaggerUIOptions c, IWebHostEnvironment env, string moduleName = "", string version = "v1")
 {
     c.SwaggerEndpoint(version + "/swagger.json", "OMSLegacy: " + moduleName + ", Env:" + env.EnvironmentName);
     c.DocExpansion(DocExpansion.None);
     c.OAuthClientId("");
     c.OAuthClientSecret("");
 }
Пример #15
0
 public static void ConfigureUI(SwaggerUIOptions options, IConfiguration config)
 {
     options.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Api");
     options.RoutePrefix = "";
     options.SupportedSubmitMethods(new SubmitMethod[0]);
     options.InjectStylesheet("/swagger-custom-styles.css");
 }
 private static void ConfigureModules(this SwaggerUIOptions c, string endPoint, ModuleCollection modules)
 {
     foreach (var module in modules.Modules.Where(x => x.EnableSwagger))
     {
         var path = endPoint.Replace("{module}", module.Name);
         c.SwaggerEndpoint(path, module.Name);
     }
 }
Пример #17
0
        private static void SetupSwaggerUi(SwaggerUIOptions options)
        {
            options.DocumentTitle = ProjectName;

            options.SwaggerEndpoint(SwaggerUrl, ProjectName);

            options.DocExpansion(DocExpansion.Full);
        }
Пример #18
0
        private static void ConfigureSwaggerUIOptions(SwaggerUIOptions options, IApiVersionDescriptionProvider provider)
        {
            var root = Utility.GetSetting <string>(Settings.AppRoot);

            foreach (var description in provider.ApiVersionDescriptions)
            {
                options.SwaggerEndpoint($"{root}/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
            }
        }
Пример #19
0
        /// <summary>
        /// Configure swagger UI options
        /// </summary>
#pragma warning disable CA1822 // Mark members as static
        public void ConfigureSwaggerUiOptions(SwaggerUIOptions options)
#pragma warning restore CA1822 // Mark members as static
        {
            // TODO: Either use the SwaggerGen generated Swagger contract (generated from C# classes)
            options.SwaggerEndpoint("/swagger/0.1.0/swagger.json", "Meetup Management Service API");

            // TODO: Or alternatively use the original Swagger contract that's included in the static files
            // options.SwaggerEndpoint("/swagger-original.json", "Meetup Management Service API Original");
        }
Пример #20
0
 public static void ConfigureSwaggerVersions(this SwaggerUIOptions swaggerUIOptions, IApiVersionDescriptionProvider provider, SwaggerVersionOptions versionOptions)
 {
     foreach (var apiVersionDescription in provider.ApiVersionDescriptions)
     {
         var url         = string.Format(versionOptions.RouteTemplate, apiVersionDescription.GroupName);
         var description = string.Format(versionOptions.DescriptionTemplate, apiVersionDescription.GroupName);
         swaggerUIOptions.SwaggerEndpoint(url, description);
     }
 }
Пример #21
0
 protected override void ConfigureSwagger(SwaggerUIOptions options, IApiVersionDescriptionProvider provider)
 {
     options.RoutePrefix = string.Empty;
     // build a swagger endpoint for each discovered API version
     foreach (var description in provider.ApiVersionDescriptions)
     {
         options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json",
                                 description.GroupName.ToUpperInvariant());
     }
 }
Пример #22
0
        static void ConfigureSwaggerUI(this SwaggerUIOptions swaggerUIOptions, IApiVersionDescriptionProvider versionProvider)
        {
            foreach (var apiVersion in versionProvider.ApiVersionDescriptions)
            {
                swaggerUIOptions.SwaggerEndpoint($"/{AppDomain.CurrentDomain.FriendlyName.ToLower()}/swagger/v{apiVersion.ApiVersion}/swagger.json", $"{AppDomain.CurrentDomain.FriendlyName} - v{apiVersion.ApiVersion}");
            }

            swaggerUIOptions.RoutePrefix = "swagger";
            swaggerUIOptions.DocExpansion(DocExpansion.List);
        }
Пример #23
0
        private void ConfigureSwaggerUI(SwaggerUIOptions options)
        {
            ExtendedOpenApiInfo openApiInfo = Configuration.GetSection("Swagger").Get <ExtendedOpenApiInfo>();

            if (!string.IsNullOrWhiteSpace(openApiInfo?.UriResource))
            {
                string name = openApiInfo.Name ?? "Unknown";
                options.SwaggerEndpoint($"/swagger/{openApiInfo.UriResource}/swagger.json", name);
            }
        }
Пример #24
0
        private void SetSwaggerOptions(SwaggerUIOptions options)
        {
            string settingKey  = Constant.AppSettingKey.AppApiEndpointUrl;
            string endpointUrl = AppSetting.GetValue(settingKey);

            settingKey = Constant.AppSettingKey.AppApiVersion;
            string apiVersion = AppSetting.GetValue(settingKey);

            options.SwaggerEndpoint(endpointUrl, apiVersion);
        }
Пример #25
0
 private static void ConfigureSwaggerUI(SwaggerUIOptions swaggerUI)
 {
     swaggerUI.DocumentTitle = "Martian Robots OpenAPI";
     swaggerUI.SwaggerEndpoint("./openapi.json", "live");
     swaggerUI.DefaultModelsExpandDepth(-1);
     swaggerUI.DisplayRequestDuration();
     swaggerUI.InjectStylesheet("./openapi.css");
     swaggerUI.InjectJavascript("./openapi.js");
     swaggerUI.EnableDeepLinking();
 }
Пример #26
0
 private static void AddSwaggerEndPoints(SwaggerUIOptions c, IEnumerable <SwaggerEndPointOptions> endPoints, string basePath)
 {
     foreach (var endPoint in endPoints)
     {
         foreach (var config in endPoint.Config)
         {
             c.SwaggerEndpoint($"{basePath}/{config.Version}/{endPoint.KeyToPath}", $"{config.Name} - {config.Version}");
         }
     }
 }
Пример #27
0
        internal void SetConfigurationSwaggerUIMenu(SwaggerUIOptions options)
        {
            var webApiAssembly = Assembly.GetEntryAssembly();
            var apiVersions    = GetApiVersions(webApiAssembly);

            foreach (var apiVersion in apiVersions)
            {
                options.SwaggerEndpoint(url: $"../swagger/v{apiVersion}/swagger.json", name: $"Documentation V{apiVersion}");
            }
        }
        private static void ConfigureSwaggerUI(this SwaggerUIOptions swaggerUIOptions, IApiVersionDescriptionProvider versionProvider)
        {
            var swaggerJsonBasePath = string.IsNullOrWhiteSpace(swaggerUIOptions.RoutePrefix) ? "." : "..";

            foreach (var apiVersion in versionProvider.ApiVersionDescriptions)
            {
                swaggerUIOptions.SwaggerEndpoint($"{swaggerJsonBasePath}/swagger/v{apiVersion.ApiVersion}/swagger.json", $"{ApiName} - v{apiVersion.ApiVersion}");
            }
            swaggerUIOptions.RoutePrefix = string.Empty;
            swaggerUIOptions.DocExpansion(DocExpansion.None);
        }
        public void Configure(SwaggerUIOptions opts)
        {
            opts.DocumentTitle = $"{_appName} API Documentation";
            opts.RoutePrefix   = RoutePrefix;

            foreach (var description in _provider.ApiVersionDescriptions)
            {
                opts.SwaggerEndpoint($"../{opts.RoutePrefix}/{description.GroupName}/{SwaggerDocName}",
                                     description.GroupName.ToUpperInvariant());
            }
        }
Пример #30
0
 private static void AddSwaggerEndPoints(SwaggerUIOptions c, IEnumerable <SwaggerEndPointOptions> endPoints, string basePath)
 {
     if (endPoints == null)
     {
         return;
     }
     foreach (var endPoint in endPoints)
     {
         c.SwaggerEndpoint($"{basePath}/{endPoint.KeyToPath}", endPoint.Name);
     }
 }