public async Task<ContentResponse> Find(string query, int maxItems = 25, bool getArtists = true, bool getAlbums = true, bool getTracks = true) { if (string.IsNullOrWhiteSpace(query)) throw new ArgumentNullException("query"); if (maxItems > 25) throw new ArgumentOutOfRangeException("maxItems"); await Authenticate(); RestRequest request = GetPopulatedRequest("1/content/{namespace}/search"); request.AddQueryString("q", query); if (maxItems != 25) { request.AddQueryString("maxItems", maxItems); } if (!(getArtists && getAlbums && getTracks)) { var filter = new List<string>(); if (getArtists) filter.Add("artists"); if (getAlbums) filter.Add("albums"); if (getTracks) filter.Add("tracks"); request.AddQueryString("filters", filter.Aggregate("", (c, n) => c.Length == 0 ? c + n : c + ("+" + n))); } request.AddQueryString("accessToken", "Bearer " + Token.AccessToken); return await _client.ExecuteAsync<ContentResponse>(request); }
public async Task<XboxMusicResult> Find(string query) { if (string.IsNullOrWhiteSpace(query)) throw new ArgumentNullException("query"); if (TokenResponse == null || !TokenResponse.IsValid) await Authenticate(); var request = GetPopulatedRequest("1/content/{namespace}/search"); request.AddQueryString("q", query); request.AddQueryString("maxItems", 25); var filter = new List<string> { "artists", "albums", "tracks" }; request.AddQueryString("filters", filter.Aggregate("", (c, n) => c.Length == 0 ? c += n : c += "+" + n)); request.AddQueryString("accessToken", "Bearer " + TokenResponse.AccessToken); return await ExecuteAsync<XboxMusicResult>(request); }