Skip to content

Commit bc5497f

Browse files
Use real urls (#3)
1 parent 1f78272 commit bc5497f

File tree

6 files changed

+130
-22
lines changed

6 files changed

+130
-22
lines changed

HttpHealthCheckDashboard/HealthCheckExtensions.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,33 @@ public static class HealthCheckExtensions
1212
public static IHealthChecksBuilder AddHealthChecksUrls(this IServiceCollection services) =>
1313
services
1414
.AddHealthChecks()
15-
.AddCheck<MicrosoftHealthCheck>("Microsoft")
16-
.AddCheck<GoogleHealthCheck>("Google")
15+
.AddCheck<BlogHealthCheck>("Blog")
16+
.AddCheck<GitHubHealthCheck>("GitHub")
17+
.AddCheck<TwitterHealthCheck>("Twitter")
18+
.AddCheck<InstagramHealthCheck>("Instagram")
1719
.AddCheck<InactiveUrlHealthCheck>("InactiveUrl")
1820
.AddCheck<InvalidUrlHealthCheck>("InvalidUrl");
1921

2022
public static void MapHealthChecksUrls(this IEndpointRouteBuilder endpoints)
2123
{
22-
endpoints.MapHealthChecks("/microsoft-hc", new HealthCheckOptions()
24+
endpoints.MapHealthChecks("/blog-hc", new HealthCheckOptions()
2325
{
24-
Predicate = r => r.Name.Contains("Microsoft"),
26+
Predicate = r => r.Name.Contains("Blog"),
2527
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
2628
});
27-
endpoints.MapHealthChecks("/google-hc", new HealthCheckOptions()
29+
endpoints.MapHealthChecks("/github-hc", new HealthCheckOptions()
2830
{
29-
Predicate = r => r.Name.Contains("Google"),
31+
Predicate = r => r.Name.Contains("GitHub"),
32+
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
33+
});
34+
endpoints.MapHealthChecks("/twitter-hc", new HealthCheckOptions()
35+
{
36+
Predicate = r => r.Name.Contains("Twitter"),
37+
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
38+
});
39+
endpoints.MapHealthChecks("/instagram-hc", new HealthCheckOptions()
40+
{
41+
Predicate = r => r.Name.Contains("Instagram"),
3042
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
3143
});
3244
endpoints.MapHealthChecks("/inactiveurl-hc", new HealthCheckOptions()
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using ArnabDeveloper.HttpHealthCheck;
2+
using Microsoft.Extensions.Diagnostics.HealthChecks;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Threading;
6+
using System.Threading.Tasks;
7+
8+
namespace HttpHealthCheckDashboard.HealthChecks
9+
{
10+
internal class BlogHealthCheck
11+
: Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck
12+
{
13+
private readonly IEnumerable<ApiDetail> _urlDetails;
14+
private readonly ICommonHealthCheck _commonHealthCheck;
15+
16+
public BlogHealthCheck(IEnumerable<ApiDetail> urlDetails,
17+
ICommonHealthCheck commonHealthCheck)
18+
{
19+
_urlDetails = urlDetails;
20+
_commonHealthCheck = commonHealthCheck;
21+
}
22+
23+
Task<HealthCheckResult> Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck.CheckHealthAsync(
24+
HealthCheckContext context, CancellationToken cancellationToken)
25+
{
26+
string apiNameToTest = nameof(BlogHealthCheck).Substring(
27+
0, nameof(BlogHealthCheck).IndexOf("HealthCheck"));
28+
ApiDetail? apiDetail = _urlDetails.FirstOrDefault(u => u.Name == apiNameToTest && u.IsEnable);
29+
30+
return _commonHealthCheck.IsApiHealthy(apiDetail)
31+
? Task.FromResult(HealthCheckResult.Healthy())
32+
: Task.FromResult(HealthCheckResult.Unhealthy());
33+
}
34+
}
35+
}

HttpHealthCheckDashboard/HealthChecks/GoogleHealthCheck.cs renamed to HttpHealthCheckDashboard/HealthChecks/GitHubHealthCheck.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
namespace HttpHealthCheckDashboard.HealthChecks
99
{
10-
internal class GoogleHealthCheck
10+
internal class GitHubHealthCheck
1111
: Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck
1212
{
1313
private readonly IEnumerable<ApiDetail> _urlDetails;
1414
private readonly ICommonHealthCheck _commonHealthCheck;
1515

16-
public GoogleHealthCheck(IEnumerable<ApiDetail> urlDetails,
16+
public GitHubHealthCheck(IEnumerable<ApiDetail> urlDetails,
1717
ICommonHealthCheck commonHealthCheck)
1818
{
1919
_urlDetails = urlDetails;
@@ -23,8 +23,8 @@ public GoogleHealthCheck(IEnumerable<ApiDetail> urlDetails,
2323
Task<HealthCheckResult> Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck.CheckHealthAsync(
2424
HealthCheckContext context, CancellationToken cancellationToken)
2525
{
26-
string apiNameToTest = nameof(GoogleHealthCheck).Substring(
27-
0, nameof(GoogleHealthCheck).IndexOf("HealthCheck"));
26+
string apiNameToTest = nameof(GitHubHealthCheck).Substring(
27+
0, nameof(GitHubHealthCheck).IndexOf("HealthCheck"));
2828
ApiDetail? apiDetail = _urlDetails.FirstOrDefault(u => u.Name == apiNameToTest && u.IsEnable);
2929

3030
return _commonHealthCheck.IsApiHealthy(apiDetail)

HttpHealthCheckDashboard/HealthChecks/MicrosoftHealthCheck.cs renamed to HttpHealthCheckDashboard/HealthChecks/InstagramHealthCheck.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
namespace HttpHealthCheckDashboard.HealthChecks
99
{
10-
internal class MicrosoftHealthCheck
10+
internal class InstagramHealthCheck
1111
: Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck
1212
{
1313
private readonly IEnumerable<ApiDetail> _urlDetails;
1414
private readonly ICommonHealthCheck _commonHealthCheck;
1515

16-
public MicrosoftHealthCheck(IEnumerable<ApiDetail> urlDetails,
16+
public InstagramHealthCheck(IEnumerable<ApiDetail> urlDetails,
1717
ICommonHealthCheck commonHealthCheck)
1818
{
1919
_urlDetails = urlDetails;
@@ -23,8 +23,8 @@ public MicrosoftHealthCheck(IEnumerable<ApiDetail> urlDetails,
2323
Task<HealthCheckResult> Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck.CheckHealthAsync(
2424
HealthCheckContext context, CancellationToken cancellationToken)
2525
{
26-
string apiNameToTest = nameof(MicrosoftHealthCheck).Substring(
27-
0, nameof(MicrosoftHealthCheck).IndexOf("HealthCheck"));
26+
string apiNameToTest = nameof(InstagramHealthCheck).Substring(
27+
0, nameof(InstagramHealthCheck).IndexOf("HealthCheck"));
2828
ApiDetail? apiDetail = _urlDetails.FirstOrDefault(u => u.Name == apiNameToTest && u.IsEnable);
2929

3030
return _commonHealthCheck.IsApiHealthy(apiDetail)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using ArnabDeveloper.HttpHealthCheck;
2+
using Microsoft.Extensions.Diagnostics.HealthChecks;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Threading;
6+
using System.Threading.Tasks;
7+
8+
namespace HttpHealthCheckDashboard.HealthChecks
9+
{
10+
internal class TwitterHealthCheck
11+
: Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck
12+
{
13+
private readonly IEnumerable<ApiDetail> _urlDetails;
14+
private readonly ICommonHealthCheck _commonHealthCheck;
15+
16+
public TwitterHealthCheck(IEnumerable<ApiDetail> urlDetails,
17+
ICommonHealthCheck commonHealthCheck)
18+
{
19+
_urlDetails = urlDetails;
20+
_commonHealthCheck = commonHealthCheck;
21+
}
22+
23+
Task<HealthCheckResult> Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck.CheckHealthAsync(
24+
HealthCheckContext context, CancellationToken cancellationToken)
25+
{
26+
string apiNameToTest = nameof(TwitterHealthCheck).Substring(
27+
0, nameof(TwitterHealthCheck).IndexOf("HealthCheck"));
28+
ApiDetail? apiDetail = _urlDetails.FirstOrDefault(u => u.Name == apiNameToTest && u.IsEnable);
29+
30+
return _commonHealthCheck.IsApiHealthy(apiDetail)
31+
? Task.FromResult(HealthCheckResult.Healthy())
32+
: Task.FromResult(HealthCheckResult.Unhealthy());
33+
}
34+
}
35+
}

HttpHealthCheckDashboard/appsettings.Development.json

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,35 @@
88
},
99
"ApiDetails": [
1010
{
11-
"Name": "Microsoft",
12-
"Url": "https://microsoft.com",
11+
"Name": "Blog",
12+
"Url": "http://arnabroychowdhuryblog.wordpress.com/",
1313
"Credential": {
1414
"UserName": "",
1515
"Password": ""
1616
},
1717
"IsEnable": true
1818
},
1919
{
20-
"Name": "Google",
21-
"Url": "https://google.com",
20+
"Name": "GitHub",
21+
"Url": "http://github.com/Arnab-Developer",
22+
"Credential": {
23+
"UserName": "",
24+
"Password": ""
25+
},
26+
"IsEnable": true
27+
},
28+
{
29+
"Name": "Twitter",
30+
"Url": "http://twitter.com/a_roy_chowdhury",
31+
"Credential": {
32+
"UserName": "",
33+
"Password": ""
34+
},
35+
"IsEnable": true
36+
},
37+
{
38+
"Name": "Instagram",
39+
"Url": "http://www.instagram.com/arnabpics/",
2240
"Credential": {
2341
"UserName": "",
2442
"Password": ""
@@ -47,12 +65,20 @@
4765
"HealthChecks-UI": {
4866
"HealthChecks": [
4967
{
50-
"Name": "Microsoft",
51-
"Uri": "http://localhost:30901/microsoft-hc"
68+
"Name": "Blog",
69+
"Uri": "http://localhost:30901/blog-hc"
70+
},
71+
{
72+
"Name": "GitHub",
73+
"Uri": "http://localhost:30901/github-hc"
74+
},
75+
{
76+
"Name": "Twitter",
77+
"Uri": "http://localhost:30901/twitter-hc"
5278
},
5379
{
54-
"Name": "Google",
55-
"Uri": "http://localhost:30901/google-hc"
80+
"Name": "Instagram",
81+
"Uri": "http://localhost:30901/instagram-hc"
5682
},
5783
{
5884
"Name": "InactiveUrl",

0 commit comments

Comments
 (0)