protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { HttpResponseMessage response = null; RequestCacheSettings cacheProperty = null; if (CacheSettingsContainer != null) { cacheProperty = CacheSettingsContainer.Resolve(request); } else if (request.Properties.ContainsKey(CachedKey)) { cacheProperty = request.Properties[CachedKey] as RequestCacheSettings; } if (cacheProperty != null && cacheProperty.IsCacheable) { var cacheService = ApiCacheService; switch (cacheProperty.Policy) { case CachePolicy.CacheFirst: response = await GetFromCacheOrSendRequest(request, cacheProperty.ExpireInSeconds, cacheService, cancellationToken); break; case CachePolicy.RequestFirst: response = await SendRequestOrGetFromCache(request, cacheProperty.ExpireInSeconds, cacheService, cancellationToken); break; } } else { response = await SendDefaultRequest(request, cancellationToken); } return(response); }
public void Register(HttpRequestMessage request, RequestCacheSettings settings) { _settings.AddOrUpdate(GetKey(request), settings, (key, value) => settings); }
internal void Register(HttpRequestMessage request, RequestCacheSettings settings) { _settings[GetKey(request)] = settings; }