From 08411b9031d5ce90c55f6083665b8412691e741a Mon Sep 17 00:00:00 2001 From: ENT8R Date: Wed, 22 Dec 2021 15:44:38 +0100 Subject: [PATCH] Allow to set custom key in RedisCacheHandler (#761) * Allow to set custom key in RedisCacheHandler * Update CHANGELOG.md * Check for the existence of the key --- CHANGELOG.md | 1 + spotipy/cache_handler.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9c9639..ebd911b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added * Added `RedisCacheHandler`, a cache handler that stores the token info in Redis. * Changed URI handling in `client.Spotify._get_id()` to remove qureies if provided by error. +* Added a new parameter to `RedisCacheHandler` to allow custom keys (instead of the default `token_info` key) ## [2.19.0] - 2021-08-12 diff --git a/spotipy/cache_handler.py b/spotipy/cache_handler.py index 4c0ef9f..ed0e878 100644 --- a/spotipy/cache_handler.py +++ b/spotipy/cache_handler.py @@ -152,18 +152,22 @@ class RedisCacheHandler(CacheHandler): A cache handler that stores the token info in the Redis. """ - def __init__(self, redis): + def __init__(self, redis, key=None): """ Parameters: * redis: Redis object provided by redis-py library (https://github.com/redis/redis-py) + * key: May be supplied, will otherwise be generated + (takes precedence over `token_info`) """ self.redis = redis + self.key = key if key else 'token_info' def get_cached_token(self): token_info = None try: - token_info = json.loads(self.redis.get('token_info')) + if self.redis.exists(self.key): + token_info = json.loads(self.redis.get(self.key)) except RedisError as e: logger.warning('Error getting token from cache: ' + str(e)) @@ -171,6 +175,6 @@ class RedisCacheHandler(CacheHandler): def save_token_to_cache(self, token_info): try: - self.redis.set('token_info', json.dumps(token_info)) + self.redis.set(self.key, json.dumps(token_info)) except RedisError as e: logger.warning('Error saving token to cache: ' + str(e))