diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs index 44045c01..98c8c985 100644 --- a/CryptoExchange.Net/Clients/RestApiClient.cs +++ b/CryptoExchange.Net/Clients/RestApiClient.cs @@ -198,7 +198,7 @@ namespace CryptoExchange.Net.Clients string? cacheKey = null; if (ShouldCache(definition)) { - cacheKey = definition.FullUrl + definition + uriParameters?.ToFormData(); + cacheKey = GetCacheKey(definition, uriParameters); _logger.CheckingCache(cacheKey); var cachedValue = _cache.Get(cacheKey, ClientOptions.CachingMaxAge); if (cachedValue != null) @@ -800,6 +800,13 @@ namespace CryptoExchange.Net.Clients && definition.Method == HttpMethod.Get && !definition.PreventCaching; + /// + /// Produce a unique cache key for the request based on the request definition and parameters. + /// + protected virtual string GetCacheKey(RequestDefinition definition, Parameters? parameters) + { + return definition.FullUrl + definition + parameters?.ToFormData(); + } /// public virtual void SetOptions(UpdateOptions options) @@ -889,6 +896,12 @@ namespace CryptoExchange.Net.Clients ApiCredentials = (TApiCredentials?)options.ApiCredentials?.Copy() ?? ApiCredentials; } + + /// + protected override string GetCacheKey(RequestDefinition definition, Parameters? parameters) + { + return definition.FullUrl + definition + parameters?.ToFormData() + GetAuthenticationProvider()?.Key; + } } ///