/// <summary> /// Save response from url to cache. /// </summary> /// <param name="requestUrl"></param> /// <param name="response"></param> void SaveToCache(IApiRequest request, IApiResponse response) { var entryOptions = new MemoryCacheEntryOptions() { Size = 1, // Add one minute so event manager has time to pull old request before it is removed AbsoluteExpiration = response.Expired + new TimeSpan(0, 1, 0) }; cache.Set(request.GetHashCode(), response, entryOptions); }
/// <summary> /// Tries to retrive an eTag from a response. /// </summary> /// <param name="request"></param> /// <param name="index"></param> /// <param name="eTag"></param> /// <returns></returns> bool TryGetETag(IApiRequest request, out string eTag) { if (cache.TryGetValue(request.GetHashCode(), out IApiResponse response)) { eTag = response.ETag; return(true); } eTag = ""; return(false); }
/// <summary> /// Check if request has been cached. And not expired /// </summary> /// <param name="request"></param> /// <param name="response"></param> /// <returns></returns> public bool TryHitCache(IApiRequest request, bool validateTime, out IApiResponse response) { return(cache.TryGetValue(request.GetHashCode(), out response) && (!validateTime || DateTime.Now < response.Expired)); }