```mermaid graph LR Cache_Handler_Interface["Cache Handler Interface"] File_Cache_Handler["File Cache Handler"] Memory_Cache_Handler["Memory Cache Handler"] Django_Session_Cache_Handler["Django Session Cache Handler"] Flask_Session_Cache_Handler["Flask Session Cache Handler"] Redis_Cache_Handler["Redis Cache Handler"] Memcache_Cache_Handler["Memcache Cache Handler"] File_Cache_Handler -- "inherits from" --> Cache_Handler_Interface Memory_Cache_Handler -- "inherits from" --> Cache_Handler_Interface Django_Session_Cache_Handler -- "inherits from" --> Cache_Handler_Interface Flask_Session_Cache_Handler -- "inherits from" --> Cache_Handler_Interface Redis_Cache_Handler -- "inherits from" --> Cache_Handler_Interface Memcache_Cache_Handler -- "inherits from" --> Cache_Handler_Interface Client_Credentials_Flow -- "uses" --> Cache_Handler_Interface Authorization_Code_Flow -- "uses" --> Cache_Handler_Interface PKCE_Authorization_Flow -- "uses" --> Cache_Handler_Interface Implicit_Grant_Flow -- "uses" --> Cache_Handler_Interface ``` [![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/GeneratedOnBoardings)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/demo)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org) ## Component Details This subsystem provides a flexible mechanism for managing the persistence and retrieval of Spotify authentication tokens. It is built around an abstract `CacheHandler` interface, which defines the contract for caching operations. Various concrete implementations, such as `CacheFileHandler`, `MemoryCacheHandler`, `DjangoSessionCacheHandler`, `FlaskSessionCacheHandler`, `RedisCacheHandler`, and `MemcacheCacheHandler`, extend this interface to support different storage backends. This design allows authentication flows to utilize a consistent caching mechanism regardless of the underlying storage technology, reducing the need for repeated user authentication and improving application performance. ### Cache Handler Interface Defines the abstract interface for managing the caching and retrieval of Spotify authorization tokens, requiring concrete implementations to provide `get_cached_token` and `save_token_to_cache` methods. **Related Classes/Methods**: - `spotipy.cache_handler.CacheHandler` (22:43) ### File Cache Handler Implements the `Cache Handler Interface` by persisting and retrieving authentication tokens as JSON files on the local disk. **Related Classes/Methods**: - `spotipy.cache_handler.CacheFileHandler` (46:102) - `spotipy.cache_handler.CacheFileHandler.__init__` (52:73) - `spotipy.cache_handler.CacheFileHandler.get_cached_token` (75:91) - `spotipy.cache_handler.CacheFileHandler.save_token_to_cache` (93:102) ### Memory Cache Handler Implements the `Cache Handler Interface` by storing authentication tokens in memory, which are lost when the instance is freed. **Related Classes/Methods**: - `spotipy.cache_handler.MemoryCacheHandler` (105:123) - `spotipy.cache_handler.MemoryCacheHandler.__init__` (112:117) - `spotipy.cache_handler.MemoryCacheHandler.get_cached_token` (119:120) - `spotipy.cache_handler.MemoryCacheHandler.save_token_to_cache` (122:123) ### Django Session Cache Handler Implements the `Cache Handler Interface` by utilizing Django's session framework to store authentication tokens. **Related Classes/Methods**: - `spotipy.cache_handler.DjangoSessionCacheHandler` (126:155) - `spotipy.cache_handler.DjangoSessionCacheHandler.__init__` (134:140) - `spotipy.cache_handler.DjangoSessionCacheHandler.get_cached_token` (142:149) - `spotipy.cache_handler.DjangoSessionCacheHandler.save_token_to_cache` (151:155) ### Flask Session Cache Handler Implements the `Cache Handler Interface` by utilizing Flask's session framework to store authentication tokens. **Related Classes/Methods**: - `spotipy.cache_handler.FlaskSessionCacheHandler` (158:180) - `spotipy.cache_handler.FlaskSessionCacheHandler.__init__` (164:165) - `spotipy.cache_handler.FlaskSessionCacheHandler.get_cached_token` (167:174) - `spotipy.cache_handler.FlaskSessionCacheHandler.save_token_to_cache` (176:180) ### Redis Cache Handler Implements the `Cache Handler Interface` by storing and retrieving authentication tokens using a Redis database. **Related Classes/Methods**: - `spotipy.cache_handler.RedisCacheHandler` (183:214) - `spotipy.cache_handler.RedisCacheHandler.__init__` (188:197) - `spotipy.cache_handler.RedisCacheHandler.get_cached_token` (199:208) - `spotipy.cache_handler.RedisCacheHandler.save_token_to_cache` (210:214) ### Memcache Cache Handler Implements the `Cache Handler Interface` by storing and retrieving authentication tokens using a Memcache server. **Related Classes/Methods**: - `spotipy.cache_handler.MemcacheCacheHandler` (217:246) - `spotipy.cache_handler.MemcacheCacheHandler.__init__` (221:230) - `spotipy.cache_handler.MemcacheCacheHandler.get_cached_token` (232:239) - `spotipy.cache_handler.MemcacheCacheHandler.save_token_to_cache` (241:246) ### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq)