public async Task <Albums> GetAlbumsByGenreAsync(FeedItemSource source, string genre, int page) { var albums = await GetAlbumsAsync(source, genre, page); // Pre cache next page Task.Run(() => GetAlbumsAsync(source, genre, page + 1)); return(albums); }
public async Task <IList <Album> > GetFeedItemsAlbumsAsync(FeedItemSource source, int page) { if (source == FeedItemSource.Boomkat) { return(await GetBoomkatAlbumsAsync()); } return(await GetSbwrAlbumsAsync()); }
public async Task <IList <Album> > GetFeedItemsAlbumsAsync(FeedItemSource source, int page) { var cacheKey = GetCacheKey(string.Format("GetAlbums:source={0}&page={1}", source, page)); var cacheTimeout = _cacheConfiguration.Timeout; return (await CacheService.GetAsync(cacheKey, cacheTimeout, false, () => _lastFeedItemService.GetFeedItemsAlbumsAsync(source, page))); }
private async void DataCacheServiceOnDataChanged(object sender, EventArgs eventArgs) { var feeds = (await _dataCacheService.GetNewsFeeds(it => it.UnreadCount > 0)).OrderBy(ob => ob.Title).ToList(); // Add items foreach (var feed in feeds) { var item = FeedItemSource.FirstOrDefault(x => x.Id == feed.Id); if (item == null) { FeedItemSource.Add(feed); } } // Remove items foreach (var feed in FeedItemSource.ToList()) { var item = feeds.FirstOrDefault(x => x.Id == feed.Id); if (item == null) { FeedItemSource.Remove(feed); } } }
private async Task <Albums> GetAlbumsAsync(FeedItemSource source, string genre, int page) { FeedItemsResult feedItemsResult; if (source == FeedItemSource.Boomkat) { feedItemsResult = (genre != "0") ? await _boomkatBoomkatFeedItemService.GetFeedItemsByGenreAsync(genre, page) : await _boomkatBoomkatFeedItemService.GetFeedItemsAsync(page); } else { feedItemsResult = await _sbwrFeedItemService.GetFeedItemsByGenreAsync(genre, page); } var albums = new Albums { Items = new List <Album>(), Pages = feedItemsResult.Pages.Select( x => (x != "...") ? new Page { Text = x, Value = int.Parse(x), IsCurrent = int.Parse(x) == page } : new Page { Text = x, Value = 0, IsDisabled = true }).ToList() }; if (page > 1) { albums.Pages.Insert(0, new Page { Text = "‹ previous", Value = page - 1 }); } if (albums.Pages[albums.Pages.Count - 1].Text == "..." || albums.Pages[albums.Pages.Count - 1].Value != page) { albums.Pages.Add(new Page { Text = "next ›", Value = page + 1 }); } foreach (var feedItem in feedItemsResult.Items) { var album = (Album)null; try { album = await _spotifyService.FindArtistAlbumAsync(feedItem.Artist, feedItem.Album); } catch (SpotifyServiceException ssex) { _newRelicTransactionManager.NoticeError(ssex); } if (album == null) { continue; } album.ImageUrl = album.ImageUrl; if (!albums.Items.Contains(album, new AlbumComparer())) { albums.Items.Add(album); } } return(albums); }