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
        };
Exemple #2
0
        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);
        }