@@ -60,7 +60,10 @@ public ExpireStorageService(
6060 cacheKey += $ "__{ Postfix } ";
6161 }
6262
63- if ( clt . IsCancellationRequested ) return defaultResponse ;
63+ if ( clt . IsCancellationRequested )
64+ {
65+ return BuildResponse ( defaultResponse , HandledBy . Default ) ;
66+ }
6467 if ( request . CachedAndReplace && ! ( IsOffline && request . AlwaysCacheWhenOffline ) )
6568 {
6669 var requestCopy = request ;
@@ -70,29 +73,13 @@ public ExpireStorageService(
7073 if ( ( request . CachedAndReplace || request . OneCallPerSession || ( IsOffline && request . AlwaysCacheWhenOffline ) ) && ! request . IgnoreCache )
7174 {
7275 var sessionResult = await _sessionStorageExpireService . GetItemAsync < TRes > ( cacheKey , clt ) ;
73- if ( sessionResult is not null )
74- {
75- if ( sessionResult is ICacheableResponse response )
76- {
77- response . FromCache = true ;
78- }
79-
80- return sessionResult ;
81- }
76+ return BuildResponse ( sessionResult , HandledBy . Cache ) ;
8277 }
8378
8479 if ( ( request . CachedAndReplace || request . OneCallPerCache || ( IsOffline && request . AlwaysCacheWhenOffline ) ) && ! request . IgnoreCache )
8580 {
8681 var cacheResult = await _localStorageExpireService . GetItemAsync < TRes ? > ( cacheKey , clt ) ;
87- if ( cacheResult is not null )
88- {
89- if ( cacheResult is ICacheableResponse response )
90- {
91- response . FromCache = true ;
92- }
93-
94- return cacheResult ;
95- }
82+ return BuildResponse ( cacheResult , HandledBy . Cache ) ;
9683 }
9784
9885 if ( ! request . CachedAndReplace )
@@ -115,19 +102,14 @@ public ExpireStorageService(
115102
116103 if ( request . IgnoreCache )
117104 {
118- return defaultResponse ;
105+ return BuildResponse ( defaultResponse , HandledBy . Default ) ;
119106 }
120107
121108 try
122109 {
123110 var cacheResult = await _localStorageExpireService . GetItemAsync < TRes ? > ( cacheKey , clt ) ;
124111 cacheResult ??= Activator . CreateInstance < TRes > ( ) ;
125- if ( cacheResult is ICacheableResponse response )
126- {
127- response . FromCache = true ;
128- }
129-
130- return cacheResult ;
112+ return BuildResponse ( cacheResult , HandledBy . Cache ) ;
131113 }
132114 catch ( HttpRequestException )
133115 {
@@ -156,16 +138,26 @@ public ExpireStorageService(
156138 ConsoleHelper . WriteLine ( ex ) ;
157139 }
158140
159- return defaultResponse ;
141+ return BuildResponse ( defaultResponse , HandledBy . Default ) ;
160142 }
161143
162- private async Task < TRes > RunSaveAndReturn < TRes > ( string cacheKey , Func < Task < TRes > > function , CachedRequest request , CancellationToken clt )
144+ private async Task < TRes ? > RunSaveAndReturn < TRes > ( string cacheKey , Func < Task < TRes > > function , CachedRequest request , CancellationToken clt )
163145 {
164146 var result = await function ( ) ;
165147 await _localStorageExpireService . SetItemAsync ( cacheKey , result , request . ExpireLocalStorage , clt ) ;
166148 if ( request . OneCallPerSession )
167149 await _sessionStorageExpireService . SetItemAsync ( cacheKey , result , request . ExpireSession , clt ) ;
168150 IsOffline = false ;
151+ return BuildResponse ( result , HandledBy . Function ) ;
152+ }
153+
154+ private static TRes ? BuildResponse < TRes > ( TRes ? result , HandledBy handledBy )
155+ {
156+ if ( result is null ) return result ;
157+ if ( result is ICacheableResponse response )
158+ {
159+ response . HandledBy = handledBy ;
160+ }
169161 return result ;
170162 }
171163}
0 commit comments