public static IApplicationBuilder UseSwagger(
            this IApplicationBuilder app,
            IConfiguration configuration)
        {
            var config = new SwaggerConfigModel();

            configuration
            .GetSection("Swagger")
            .Bind(config);

            if (!config.IsConfigured())
            {
                throw new InvalidProgramException(
                          "Swagger not configured.");
            }

            app
            .UseSwagger()
            .UseSwaggerUI(
                _ =>
            {
                _.SwaggerEndpoint(
                    config.Url,
                    config.Name);

                _.RoutePrefix = config.RoutePrefix;
            });

            return(app);
        }
        public static IServiceCollection AddSwagger(
            this IServiceCollection services,
            IConfiguration configuration)
        {
            var config = new SwaggerConfigModel();

            configuration
            .GetSection("Swagger")
            .Bind(config);

            if (!config.IsConfigured())
            {
                throw new InvalidProgramException(
                          "Swagger not configured.");
            }

            services
            .AddSwaggerGen(
                _ =>
            {
                _.SwaggerDoc(
                    config.Name,
                    new OpenApiInfo
                {
                    Title   = config.Title,
                    Version = config.Version
                });
            });

            return(services);
        }