private IMethodCachingSettings GetCachingSettings(double ttlSeconds = 60 * 60 * 6, double refreshTimeSeconds = 60, RevokedResponseBehavior revokedResponseBehavior = RevokedResponseBehavior.FetchNewValueNextTime, ResponseKinds responseKindsToCache = ResponseKinds.NonNullResponse | ResponseKinds.NullResponse, ResponseKinds responseKindsToIgnore = ResponseKinds.EnvironmentException | ResponseKinds.OtherExceptions | ResponseKinds.RequestException | ResponseKinds.TimeoutException, RefreshBehavior refreshBehavior = RefreshBehavior.UseOldAndFetchNewValueInBackground) => new MethodCachingPolicyConfig { ExpirationTime = TimeSpan.FromSeconds(ttlSeconds), RefreshTime = TimeSpan.FromSeconds(refreshTimeSeconds), FailedRefreshDelay = TimeSpan.FromSeconds(1), Enabled = true, ResponseKindsToCache = responseKindsToCache, ResponseKindsToIgnore = responseKindsToIgnore, RequestGroupingBehavior = RequestGroupingBehavior.Enabled, RefreshBehavior = refreshBehavior, RevokedResponseBehavior = revokedResponseBehavior, CacheResponsesWhenSupressedBehavior = CacheResponsesWhenSupressedBehavior.Enabled, RefreshMode = RefreshMode.UseRefreshes, ExpirationBehavior = ExpirationBehavior.DoNotExtendExpirationWhenReadFromCache, NotIgnoredResponseBehavior = NotIgnoredResponseBehavior.KeepCachedResponse };
private async Task <IResponse> GetResponseAsync <T>(HttpResponseMessage responseMessage, ResponseKinds kind) where T : BaseResponseModel { var response = new Response(); var contentString = ""; try { contentString = await responseMessage?.Content.ReadAsStringAsync(); responseMessage.EnsureSuccessStatusCode(); response._response = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(contentString); response.Kind = kind; } catch (Exception ex) { response._response = GetErrorResponse(contentString, responseMessage.StatusCode, ex); response.Kind = ResponseKinds.error; } return(response); }