using Sony.Filtr.AppleMusic.BestOfTheWeek.Caching.Models; using Sony.Filtr.DistributedCaching; using System; using System.Collections.Generic; namespace Sony.Filtr.AppleMusic.BestOfTheWeek.Caching { public class BestOfTheWeekCacheProvider { private readonly DistributedCacheHandler _cacheHandler; public BestOfTheWeekCacheProvider(DistributedCacheHandler cacheHandler) { _cacheHandler = cacheHandler; } public void SetPlaylistReferences(IList playlistReferences) { _cacheHandler.Put(BestOfTheWeekCacheKeys.PlaylistReferences, playlistReferences); } public IList GetPlaylistReferences() { return _cacheHandler.Get(BestOfTheWeekCacheKeys.PlaylistReferences) as List; } public void SetPlaylistCollection(BestOfTheWeekPlaylistReference playlist, DateTime date, List playlistContent) { _cacheHandler.Put(BuildPlaylistCacheKey(playlist, date), playlistContent); } public List GetPlaylistCollection(BestOfTheWeekPlaylistReference playlist, DateTime date) { return _cacheHandler.Get(BuildPlaylistCacheKey(playlist, date)) as List; } private string BuildPlaylistCacheKey(BestOfTheWeekPlaylistReference playlist, DateTime date) { return string.Join(":", "BotW_playlistTracklist", playlist.PlaylistId, playlist.Storefront, date); } public void ClearCache(BestOfTheWeekPlaylistReference playlist, DateTime date) { _cacheHandler.Remove(BuildPlaylistCacheKey(playlist, date)); } } internal class BestOfTheWeekCacheKeys { internal const string PlaylistReferences = "BotW_PlaylistReferences"; } }