Esempio n. 1
0
        public override async Task <WebResults> SearchAsync(string query,
                                                            WebResults.Type searchType = WebResults.Type.Song,
                                                            int limit = 20, string pageToken = null)
        {
            switch (searchType)
            {
            default:
                var songResponse = await
                                       (pageToken == null
                            ? _client.SearchAsync(Namespace.music, query, ContentSource.Catalog, SearchFilter.Tracks,
                                                  maxItems: limit)
                            : _client.SearchContinuationAsync(Namespace.music, pageToken));
                var songResults = new WebResults
                {
                    HasMore   = songResponse.Tracks?.ContinuationToken != null,
                    PageToken = songResponse.Tracks?.ContinuationToken,
                    Songs     = songResponse.Tracks?.Items?.Select(CreateSong).ToList()
                };
                return(songResults);

            case WebResults.Type.Artist:
                var artistResponse =
                    await
                        (pageToken == null
                                ? _client.SearchAsync(Namespace.music, query, ContentSource.Catalog,
                                                      SearchFilter.Artists, maxItems: limit)
                                : _client.SearchContinuationAsync(Namespace.music, pageToken));
                var artistResults = new WebResults
                {
                    HasMore   = artistResponse.Artists?.ContinuationToken != null,
                    PageToken = artistResponse.Artists?.ContinuationToken,
                    Artists   = artistResponse.Artists?.Items?.Select(CreateArtist).ToList()
                };
                return(artistResults);

            case WebResults.Type.Album:
                var albumResponse =
                    await
                        (pageToken == null
                                ? _client.SearchAsync(Namespace.music, query, ContentSource.Catalog, SearchFilter.Albums,
                                                      maxItems: limit)
                                : _client.SearchContinuationAsync(Namespace.music, pageToken));
                var albumResults = new WebResults
                {
                    HasMore   = albumResponse.Albums?.ContinuationToken != null,
                    PageToken = albumResponse.Albums?.ContinuationToken,
                    Albums    =
                        albumResponse.Albums?.Items?.Select(CreateAlbum).Distinct(new WebAlbum.Comparer()).ToList()
                };
                return(albumResults);
            }
        }