@@ -10,36 +10,73 @@ namespace Microsoft.Extensions.HealthChecks
1010{
1111 public static partial class HealthCheckBuilderExtensions
1212 {
13- // URL checks
13+ // Default URL check
1414
1515 public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url )
16- => AddUrlCheck ( builder , url , response => UrlChecker . DefaultUrlCheck ( response ) ) ;
16+ {
17+ Guard . ArgumentNotNull ( nameof ( builder ) , builder ) ;
18+
19+ return AddUrlCheck ( builder , url , builder . DefaultCacheDuration ) ;
20+ }
21+
22+ public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url , TimeSpan cacheDuration )
23+ => AddUrlCheck ( builder , url , response => UrlChecker . DefaultUrlCheck ( response ) , cacheDuration ) ;
24+
25+ // Func returning IHealthCheckResult
26+
27+ public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url , Func < HttpResponseMessage , IHealthCheckResult > checkFunc )
28+ {
29+ Guard . ArgumentNotNull ( nameof ( builder ) , builder ) ;
30+
31+ return AddUrlCheck ( builder , url , checkFunc , builder . DefaultCacheDuration ) ;
32+ }
1733
1834 public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url ,
19- Func < HttpResponseMessage , IHealthCheckResult > checkFunc )
35+ Func < HttpResponseMessage , IHealthCheckResult > checkFunc ,
36+ TimeSpan cacheDuration )
2037 {
2138 Guard . ArgumentNotNull ( nameof ( checkFunc ) , checkFunc ) ;
2239
23- return AddUrlCheck ( builder , url , response => new ValueTask < IHealthCheckResult > ( checkFunc ( response ) ) ) ;
40+ return AddUrlCheck ( builder , url , response => new ValueTask < IHealthCheckResult > ( checkFunc ( response ) ) , cacheDuration ) ;
41+ }
42+
43+ // Func returning Task<IHealthCheckResult>
44+
45+ public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url , Func < HttpResponseMessage , Task < IHealthCheckResult > > checkFunc )
46+ {
47+ Guard . ArgumentNotNull ( nameof ( builder ) , builder ) ;
48+
49+ return AddUrlCheck ( builder , url , checkFunc , builder . DefaultCacheDuration ) ;
2450 }
2551
2652 public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url ,
27- Func < HttpResponseMessage , Task < IHealthCheckResult > > checkFunc )
53+ Func < HttpResponseMessage , Task < IHealthCheckResult > > checkFunc ,
54+ TimeSpan cacheDuration )
2855 {
2956 Guard . ArgumentNotNull ( nameof ( checkFunc ) , checkFunc ) ;
3057
31- return AddUrlCheck ( builder , url , response => new ValueTask < IHealthCheckResult > ( checkFunc ( response ) ) ) ;
58+ return AddUrlCheck ( builder , url , response => new ValueTask < IHealthCheckResult > ( checkFunc ( response ) ) , cacheDuration ) ;
59+ }
60+
61+ // Func returning ValueTask<IHealthCheckResult>
62+
63+ public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url , Func < HttpResponseMessage , ValueTask < IHealthCheckResult > > checkFunc )
64+ {
65+ Guard . ArgumentNotNull ( nameof ( builder ) , builder ) ;
66+
67+ return AddUrlCheck ( builder , url , checkFunc , builder . DefaultCacheDuration ) ;
3268 }
3369
3470 public static HealthCheckBuilder AddUrlCheck ( this HealthCheckBuilder builder , string url ,
35- Func < HttpResponseMessage , ValueTask < IHealthCheckResult > > checkFunc )
71+ Func < HttpResponseMessage , ValueTask < IHealthCheckResult > > checkFunc ,
72+ TimeSpan cacheDuration )
3673 {
3774 Guard . ArgumentNotNull ( nameof ( builder ) , builder ) ;
3875 Guard . ArgumentNotNullOrEmpty ( nameof ( url ) , url ) ;
3976 Guard . ArgumentNotNull ( nameof ( checkFunc ) , checkFunc ) ;
4077
4178 var urlCheck = new UrlChecker ( checkFunc , url ) ;
42- builder . AddCheck ( $ "UrlCheck({ url } )", ( ) => urlCheck . CheckAsync ( ) ) ;
79+ builder . AddCheck ( $ "UrlCheck({ url } )", ( ) => urlCheck . CheckAsync ( ) , cacheDuration ) ;
4380 return builder ;
4481 }
4582 }
0 commit comments