示例#1
0
        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)));
        }
示例#4
0
        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);
                }
            }
        }
示例#5
0
        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);
        }