コード例 #1
0
ファイル: HealthEndpointCore.cs プロジェクト: winhu/Steeltoe
        protected virtual HealthCheckResult BuildHealth(IHealthAggregator aggregator, IList <IHealthContributor> contributors, ISecurityContext securityContext, IOptionsMonitor <HealthCheckServiceOptions> svcOptions, IServiceProvider provider)
        {
            var registrationAggregator = _aggregator as IHealthRegistrationsAggregator;

            var result = registrationAggregator == null
                ? _aggregator.Aggregate(contributors)
                : registrationAggregator.Aggregate(contributors, svcOptions, provider);

            var showDetails = Options.ShowDetails;

            if (showDetails == ShowDetails.Never ||
                (showDetails == ShowDetails.WhenAuthorized &&
                 !securityContext.HasClaim(Options.Claim)))
            {
                result = new HealthCheckResult
                {
                    Status      = result.Status,
                    Description = result.Description
                };
            }

            return(result);
        }
コード例 #2
0
        protected override HealthEndpointResponse BuildHealth(ISecurityContext securityContext)
        {
            var groupName = GetRequestedHealthGroup(securityContext);
            ICollection <HealthCheckRegistration> healthCheckRegistrations;
            IList <IHealthContributor>            filteredContributors;

            if (!string.IsNullOrEmpty(groupName) && groupName != Options.Id)
            {
                filteredContributors     = GetFilteredContributorList(groupName, _contributors);
                healthCheckRegistrations = GetFilteredHealthCheckServiceOptions(groupName, _serviceOptions);
            }
            else
            {
                filteredContributors     = _contributors;
                healthCheckRegistrations = _serviceOptions.CurrentValue.Registrations;
            }

            var result = !(_aggregator is IHealthRegistrationsAggregator registrationAggregator)
                                ? _aggregator.Aggregate(filteredContributors)
                                : registrationAggregator.Aggregate(filteredContributors, healthCheckRegistrations, _provider);
            var response = new HealthEndpointResponse(result);

            var showDetails = Options.ShowDetails;

            if (showDetails == ShowDetails.Never || (showDetails == ShowDetails.WhenAuthorized && !securityContext.HasClaim(Options.Claim)))
            {
                response.Details = new Dictionary <string, object>();
            }
            else
            {
                response.Groups = Options.Groups.Select(g => g.Key);
            }

            return(response);
        }