public async Task <FeedItemsResult> GetFeedItemsAsync(int page)
        {
            var cacheKey     = GetCacheKey(string.Format("GetFeedItems:page={0}", page));
            var cacheTimeout = _cacheConfiguration.Timeout;

            return
                (await
                 CacheService.GetAsync(cacheKey, cacheTimeout, true,
                                       () => _boomkatFeedItemService.GetFeedItemsAsync(page)));
        }
Пример #2
0
        private async Task <IList <Album> > GetBoomkatAlbumsAsync()
        {
            var albums = new List <Album>();

            var feedPage = 1;

            while (feedPage < BoomkatMaxFeedPageCount && albums.Count < NumberOfAlbums)
            {
                var feedItems = await _boomkatFeedItemService.GetFeedItemsAsync(feedPage);
                await GetFeedItemsAlbumsAsync(feedItems, albums);

                if (albums.Count == NumberOfAlbums)
                {
                    break;
                }
                feedPage++;
            }

            return(albums);
        }
Пример #3
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);
        }