1- namespace Shared . EventStore . SubscriptionWorker ;
1+ using SimpleResults ;
2+
3+ namespace Shared . EventStore . SubscriptionWorker ;
24 using System ;
35 using System . Collections . Generic ;
46 using System . Diagnostics . CodeAnalysis ;
1214 public class SubscriptionRepository : ISubscriptionRepository {
1315 private Int32 CacheHits ;
1416 private Int32 FullRefreshHits ;
15- private Func < CancellationToken , Task < List < PersistentSubscriptionInfo > > > GetAllSubscriptions ;
17+ private Func < CancellationToken , Task < Result < List < PersistentSubscriptionInfo > > > > GetAllSubscriptions ;
1618 private readonly Func < Boolean , PersistentSubscriptions , Boolean > RefreshRequired ;
1719 private Int32 running ;
1820 private PersistentSubscriptions Subscriptions ;
@@ -29,37 +31,39 @@ public static SubscriptionRepository Create(String eventStoreConnectionString,
2931 Int32 cacheDuration = 120 ) {
3032 EventStoreClientSettings settings = EventStoreClientSettings . Create ( eventStoreConnectionString ) ;
3133 HttpClient httpClient = SubscriptionWorkerHelper . CreateHttpClient ( settings ) ;
32- return new SubscriptionRepository ( cacheDuration ) { GetAllSubscriptions = cancellationToken => SubscriptionRepository . GetSubscriptions ( httpClient , cancellationToken ) } ;
34+
35+
36+ return new SubscriptionRepository ( cacheDuration ) { GetAllSubscriptions = cancellationToken => GetSubscriptions ( httpClient , cancellationToken ) } ;
3337 }
3438
35- public static SubscriptionRepository Create ( Task < List < PersistentSubscriptionInfo > > func ,
39+ public static SubscriptionRepository Create ( Task < Result < List < PersistentSubscriptionInfo > > > func ,
3640 Int32 cacheDuration = 120 ) {
3741
3842 return new ( cacheDuration ) { GetAllSubscriptions = _ => func } ;
3943
4044 }
4145
42- public static SubscriptionRepository Create ( Func < CancellationToken , Task < List < PersistentSubscriptionInfo > > > func ,
46+ public static SubscriptionRepository Create ( Func < CancellationToken , Task < Result < List < PersistentSubscriptionInfo > > > > func ,
4347 Int32 cacheDuration = 120 ) {
4448 return new ( cacheDuration ) { GetAllSubscriptions = func } ;
4549 }
4650
47- public static async Task < List < PersistentSubscriptionInfo > > GetSubscriptions ( HttpClient httpClient ,
48- CancellationToken cancellationToken ) {
51+ public static async Task < Result < List < PersistentSubscriptionInfo > > > GetSubscriptions ( HttpClient httpClient ,
52+ CancellationToken cancellationToken ) {
4953 try {
5054 HttpResponseMessage responseMessage = await httpClient . SendAsync ( new HttpRequestMessage ( HttpMethod . Get , "subscriptions" ) , cancellationToken ) ;
5155 String responseBody = await responseMessage . Content . ReadAsStringAsync ( cancellationToken ) ;
5256
5357 if ( responseMessage . IsSuccessStatusCode ) {
5458 List < PersistentSubscriptionInfo > list = JsonConvert . DeserializeObject < List < PersistentSubscriptionInfo > > ( responseBody ) ;
5559
56- return list ;
60+ return Result . Success ( list ) ;
5761 }
5862
59- throw new ApplicationException ( $ "Response was [{ responseBody } ] and status code was [{ responseMessage . StatusCode } ]") ;
63+ return Result . Failure ( $ "Response was [{ responseBody } ] and status code was [{ responseMessage . StatusCode } ]") ;
6064 }
6165 catch ( Exception ex ) {
62- throw new ApplicationException ( $ "Unable to get persistent subscription list. [{ ex } ]") ;
66+ return Result . Failure ( $ "Unable to get persistent subscription list. [{ ex } ]") ;
6367 }
6468 }
6569
@@ -76,11 +80,12 @@ public async Task<PersistentSubscriptions> GetSubscriptions(Boolean forceRefresh
7680
7781 this . WriteTrace ( "Full refresh on repository" ) ;
7882
79- List < PersistentSubscriptionInfo > list = await this . GetAllSubscriptions ( cancellationToken ) ;
83+ Result < List < PersistentSubscriptionInfo > > list = await this . GetAllSubscriptions ( cancellationToken ) ;
8084
81- this . FullRefreshHits ++ ;
85+ // TODO: Log failure?
86+ this . FullRefreshHits ++ ;
8287
83- this . Subscriptions = this . Subscriptions . Update ( list ) ;
88+ this . Subscriptions = this . Subscriptions . Update ( list . Data ) ;
8489
8590 this . WriteTrace ( $ "Full refresh on repository completed { this . FullRefreshHits } ") ;
8691
0 commit comments