public static HealthCheckBuilder AddAppMetricsCheck(this HealthCheckBuilder builder, string url, Func <HttpResponseMessage, Task <IHealthCheckResult> > checkFunc)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(AddAppMetricsCheck(builder, url, checkFunc));
        }
        public static IServiceCollection AddHealthChecks(this IServiceCollection services, Action <HealthCheckBuilder> checks)
        {
            if (services.Any(descriptor => descriptor.ServiceType == HealthCheckServiceInterface))
            {
                throw new ArgumentException("AddHealthChecks may only be called once.");
            }
            var builder = new HealthCheckBuilder();

            services.AddSingleton <IHealthCheckService, HealthCheckService>(serviceProvider =>
            {
                var serviceScopeFactory = serviceProvider.GetService <IServiceScopeFactory>();
                return(new HealthCheckService(builder, serviceProvider, serviceScopeFactory));
            });

            checks(builder);
            return(services);
        }
        public static HealthCheckBuilder AddAppMetricsCheck(this HealthCheckBuilder builder, string name, string url, Func <HttpResponseMessage, ValueTask <IHealthCheckResult> > checkFunc)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

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

            builder.AddCheck($"Check({name})", HealthCheck.FromTaskCheck(() =>
            {
                var appmetricsChecker = new AppmetricsChecker(checkFunc, url);
                return(appmetricsChecker.CheckAsync());
            }));
            return(builder);
        }
 public static HealthCheckBuilder AddUrlCheck(this HealthCheckBuilder builder, string url)
 => AddUrlCheck(builder, url, response => UrlChecker.DefaultUrlCheck(response));
 public static HealthCheckBuilder AddAppMetricsCheck(this HealthCheckBuilder builder, string name, string url)
 => AddAppMetricsCheck(builder, name, url, response => AppmetricsChecker.DefaultAppmetricsCheck(response));
 public HealthCheckService(HealthCheckBuilder builder, IServiceProvider serviceProvider, IServiceScopeFactory serviceScopeFactory)
 {
     _builder             = builder;
     _serviceProvider     = serviceProvider;
     _serviceScopeFactory = serviceScopeFactory;
 }