Skip to content

Commit

Permalink
Merge pull request #34 from FRACerqueira/v2.0.0
Browse files Browse the repository at this point in the history
v.2.0.0-beta2
  • Loading branch information
FRACerqueira committed Feb 20, 2024
2 parents 8832e20 + d5cae29 commit fbda57e
Show file tree
Hide file tree
Showing 11 changed files with 242 additions and 15 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ public class MyBussines
{
//do something
}
if (healthCheckApp.StatusDep(MyEnum.HcTeste2).Status == HealthStatus.Unhealthy)
if (healthCheckApp.StatusResult(MyEnum.HcTeste2).Status == HealthStatus.Unhealthy)
{
//do something. This dependency 'HcTeste2' is not available
}
Expand Down
2 changes: 1 addition & 1 deletion README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ public class MyBussines
{
//do something
}
if (healthCheckApp.StatusDep(MyEnum.HcTeste2).Status == HealthStatus.Unhealthy)
if (healthCheckApp.StatusResult(MyEnum.HcTeste2).Status == HealthStatus.Unhealthy)
{
//do something. This dependency 'HcTeste2' is not available
}
Expand Down
2 changes: 2 additions & 0 deletions docs/apis/apis.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

- [HealthCheckTrigger](./healthcheckplus.healthchecktrigger.md)

- [HealthReportExtensions](./healthcheckplus.healthreportextensions.md)

- [IDataHealthPlus](./healthcheckplus.idatahealthplus.md)

- [IStateHealthChecksPlus](./healthcheckplus.istatehealthchecksplus.md)
Expand Down
126 changes: 126 additions & 0 deletions docs/apis/healthcheckplus.healthreportextensions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# <img align="left" width="100" height="100" src="../images/icon.png">HealthCheckPlus API:HealthReportExtensions

[![Build](https://github.com/FRACerqueira/HealthCheckPlus/workflows/Build/badge.svg)](https://github.com/FRACerqueira/HealthCheckPlus/actions/workflows/build.yml)
[![License](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/FRACerqueira/HealthCheckPlus/blob/master/LICENSE)
[![NuGet](https://img.shields.io/nuget/v/HealthCheckPlus)](https://www.nuget.org/packages/HealthCheckPlus/)
[![Downloads](https://img.shields.io/nuget/dt/HealthCheckPlus)](https://www.nuget.org/packages/HealthCheckPlus/)

[**Back to List Api**](./apis.md)

# HealthReportExtensions

Namespace: HealthCheckPlus

The Extensions for HealthReport

```csharp
public static class HealthReportExtensions
```

Inheritance [Object](https://docs.microsoft.com/en-us/dotnet/api/system.object) → [HealthReportExtensions](./healthcheckplus.healthreportextensions.md)
## Methods

### <a id="methods-statusresult"/>**StatusResult(HealthReport, Enum)**

The last data for HealthCheck.

```csharp
public static HealthStatus StatusResult(HealthReport report, Enum keydep)
```

#### Parameters

`report` HealthReport<br>
The .

`keydep` [Enum](https://docs.microsoft.com/en-us/dotnet/api/system.enum)<br>
The Enum value dependence.

#### Returns

HealthStatus

### <a id="methods-trygetdegraded"/>**TryGetDegraded(HealthReport, ref Dictionary`2)**

Try get all degraded status.

```csharp
public static bool TryGetDegraded(HealthReport report, ref Dictionary`2 result)
```

#### Parameters

`report` HealthReport<br>
The .

`result` [Dictionary`2&](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2&)<br>
the Dictionary with all HealthCheck Result with degraded status

#### Returns

True if found, oyherwise false.

### <a id="methods-trygethealthy"/>**TryGetHealthy(HealthReport, ref Dictionary`2)**

Try get all healthy status.

```csharp
public static bool TryGetHealthy(HealthReport report, ref Dictionary`2 result)
```

#### Parameters

`report` HealthReport<br>
The .

`result` [Dictionary`2&](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2&)<br>
the Dictionary with all HealthCheck Result with healthy status

#### Returns

True if found, oyherwise false.

### <a id="methods-trygetnothealthy"/>**TryGetNotHealthy(HealthReport, ref Dictionary`2)**

Try get all not healthy status.

```csharp
public static bool TryGetNotHealthy(HealthReport report, ref Dictionary`2 result)
```

#### Parameters

`report` HealthReport<br>
The .

`result` [Dictionary`2&](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2&)<br>
the Dictionary with all HealthCheck Result with not healthy status

#### Returns

True if found, oyherwise false.

### <a id="methods-trygetunhealthy"/>**TryGetUnhealthy(HealthReport, ref Dictionary`2)**

Try get all unhealthy status.

```csharp
public static bool TryGetUnhealthy(HealthReport report, ref Dictionary`2 result)
```

#### Parameters

`report` HealthReport<br>
The .

`result` [Dictionary`2&](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2&)<br>
the Dictionary with all HealthCheck Result with unhealthy status

#### Returns

True if found, oyherwise false.


- - -
[**Back to List Api**](./apis.md)
8 changes: 4 additions & 4 deletions docs/apis/healthcheckplus.istatehealthchecksplus.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ name of url request([HealthCheckPlusOptions.HealthCheckName](./healthcheckplus.o

HealthStatus

### <a id="methods-statusdep"/>**StatusDep(Enum)**
### <a id="methods-statusresult"/>**StatusResult(Enum)**

The last data for HealthCheck.

```csharp
HealthCheckResult StatusDep(Enum keydep)
HealthCheckResult StatusResult(Enum keydep)
```

#### Parameters
Expand All @@ -70,12 +70,12 @@ The Enum value dependence.

HealthCheckResult

### <a id="methods-statusdep"/>**StatusDep(String)**
### <a id="methods-statusresult"/>**StatusResult(String)**

The last data for HealthCheck.

```csharp
HealthCheckResult StatusDep(string keydep)
HealthCheckResult StatusResult(string keydep)
```

#### Parameters
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ public class MyBussines
{
//do something
}
if (healthCheckApp.StatusDep(MyEnum.HcTeste2).Status == HealthStatus.Unhealthy)
if (healthCheckApp.StatusResult(MyEnum.HcTeste2).Status == HealthStatus.Unhealthy)
{
//do something. This dependency 'HcTeste2' is not available
}
Expand Down
4 changes: 2 additions & 2 deletions src/HealthCheckPlus.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<PackageId>HealthCheckPlus</PackageId>
<PackageReadmeFile>NugetREADME.md</PackageReadmeFile>
<PackageProjectUrl>https://fracerqueira.github.io/HealthCheckPlus</PackageProjectUrl>
<Version>2.0.0-beta1</Version>
<Version>2.0.0-beta2</Version>
<PackageIcon>icon.png</PackageIcon>
<Copyright>© 2023 - Fernando Cerqueira</Copyright>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
Expand Down Expand Up @@ -66,7 +66,7 @@
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
</ItemGroup>

<ItemGroup >
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="8.0.2" />
</ItemGroup>
Expand Down
94 changes: 94 additions & 0 deletions src/HealthReportExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// ********************************************************************************************
// MIT LICENCE
// The maintenance and evolution is maintained by the HealthCheckPlus project under MIT license
// ********************************************************************************************

using System.Runtime.CompilerServices;
using Microsoft.Extensions.Diagnostics.HealthChecks;

namespace HealthCheckPlus
{
/// <summary>
/// The Extensions for HealthReport
/// </summary>
public static class HealthReportExtensions
{
/// <summary>
/// The last <see cref="HealthCheckResult"/> data for HealthCheck.
/// </summary>
/// <param name="report">The <see cref="HealthReport"/>.</param>
/// <param name="keydep">
/// The Enum value dependence.
/// </param>
public static HealthStatus StatusResult(this HealthReport report, Enum keydep)
{
var aux = report.Entries
.Where(x => x.Key == keydep.ToString());
if (!aux.Any())
{
throw new ArgumentException($"The {nameof(keydep)} must not found.", nameof(keydep));
}
return aux
.Select(X => X.Value.Status)
.FirstOrDefault();
}

/// <summary>
/// Try get all not healthy status.
/// </summary>
/// <param name="report">The <see cref="HealthReport"/>.</param>
/// <param name="result">the Dictionary with all HealthCheck Result with not healthy status</param>
/// <returns>True if found, oyherwise false.</returns>
public static bool TryGetNotHealthy(this HealthReport report, out Dictionary<string, HealthCheckResult> result)
{
result = GetEntriesStatus(report, x => x.Status != HealthStatus.Healthy);
return result.Count != 0;
}

/// <summary>
/// Try get all healthy status.
/// </summary>
/// <param name="report">The <see cref="HealthReport"/>.</param>
/// <param name="result">the Dictionary with all HealthCheck Result with healthy status</param>
/// <returns>True if found, oyherwise false.</returns>
public static bool TryGetHealthy(this HealthReport report, out Dictionary<string, HealthCheckResult> result)
{
result = GetEntriesStatus(report, x => x.Status == HealthStatus.Healthy);
return result.Count != 0;
}

/// <summary>
/// Try get all degraded status.
/// </summary>
/// <param name="report">The <see cref="HealthReport"/>.</param>
/// <param name="result">the Dictionary with all HealthCheck Result with degraded status</param>
/// <returns>True if found, oyherwise false.</returns>
public static bool TryGetDegraded(this HealthReport report, out Dictionary<string, HealthCheckResult> result)
{
result = GetEntriesStatus(report, x => x.Status == HealthStatus.Degraded);
return result.Count != 0;
}

/// <summary>
/// Try get all unhealthy status.
/// </summary>
/// <param name="report">The <see cref="HealthReport"/>.</param>
/// <param name="result">the Dictionary with all HealthCheck Result with unhealthy status</param>
/// <returns>True if found, oyherwise false.</returns>
public static bool TryGetUnhealthy(this HealthReport report, out Dictionary<string, HealthCheckResult> result)
{
result = GetEntriesStatus(report,x => x.Status == HealthStatus.Unhealthy);
return result.Count != 0;
}

private static Dictionary<string, HealthCheckResult> GetEntriesStatus(HealthReport report, Predicate<HealthReportEntry> predicate)
{
Dictionary<string, HealthCheckResult> result = [];
foreach (var item in report.Entries.Where(x => predicate(x.Value)))
{
result.Add(item.Key, new HealthCheckResult(item.Value.Status, item.Value.Description, item.Value.Exception, item.Value.Data));
}
return result;
}
}
}
7 changes: 6 additions & 1 deletion src/IDataHealthPlus.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
using Microsoft.Extensions.Diagnostics.HealthChecks;
// ********************************************************************************************
// MIT LICENCE
// The maintenance and evolution is maintained by the HealthCheckPlus project under MIT license
// ********************************************************************************************

using Microsoft.Extensions.Diagnostics.HealthChecks;

namespace HealthCheckPlus
{
Expand Down
4 changes: 2 additions & 2 deletions src/IStateHealthChecksPlus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ public interface IStateHealthChecksPlus
/// <param name="keydep">
/// The Enum value dependence.
/// </param>
HealthCheckResult StatusDep(Enum keydep);
HealthCheckResult StatusResult(Enum keydep);

/// <summary>
/// The last <see cref="HealthCheckResult"/> data for HealthCheck.
/// </summary>
/// <param name="keydep">
/// The name dependence.
/// </param>
HealthCheckResult StatusDep(string keydep);
HealthCheckResult StatusResult(string keydep);

/// <summary>
/// Gets a <see cref="HealthStatus"/> representing the aggregate status of all the health checks.
Expand Down
6 changes: 3 additions & 3 deletions src/Internal/CacheHealthCheckPlus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,12 +150,12 @@ public ItemCacheHealth FullStatus(string keydep)

#region IStateHealthChecksPlus

public HealthCheckResult StatusDep(Enum keydep)
public HealthCheckResult StatusResult(Enum keydep)
{
return StatusDep(keydep.ToString());
return StatusResult(keydep.ToString());
}

public HealthCheckResult StatusDep(string keydep)
public HealthCheckResult StatusResult(string keydep)
{
return _statusDeps[keydep].Lastresult;
}
Expand Down

0 comments on commit fbda57e

Please sign in to comment.