/// <summary> /// Main method to continue a paginated search in the catalog /// </summary> /// <param name="ids">List of object ids</param> /// <param name="continuationToken">The token to continue a previously started lookup</param> /// <returns>The list of items found in the catalog</returns> public async Task <GrooveResponse> ContinueLookupAsync(string continuationToken, IEnumerable <string> ids) { var formattedParams = ParametersFormatter.Format(ids); var url = $"1/content/{formattedParams}/lookup?continuationToken={continuationToken}"; return(await m_client.Value.QueryMusicServiceAsync <GrooveResponse>(url)); }
/// <summary> /// Lookup a specific set of objects in the catalog /// </summary> /// <param name="ids">List of object ids</param> /// <returns>The list of items found in the catalog</returns> public async Task <GrooveResponse> LookupAsync(IEnumerable <string> ids) { var formattedParams = ParametersFormatter.Format(ids); var url = $"1/content/{formattedParams}/lookup?locale={m_culture.Name}&country={m_culture.Name}&language={m_culture.Name}"; return(await m_client.Value.QueryMusicServiceAsync <GrooveResponse>(url)); }
/// <summary> /// Lookup a specific set of objects in the catalog /// </summary> /// <param name="ids">List of object ids</param> /// <param name="source">Where to search in the catalog</param> /// <param name="extraFields">Extra object to include in the results</param> /// <returns>The list of items found in the catalog</returns> public async Task <GrooveResponse> LookupAsync(IEnumerable <string> ids, IEnumerable <SearchSource> source, IEnumerable <ExtrasParameters> extraFields) { var formattedParams = ParametersFormatter.Format(ids); var formattedSource = ParametersFormatter.Format(source.Select(x => x.ToString())); var formattedExtras = ParametersFormatter.Format(extraFields.Select(x => x.ToString())); var url = $"1/content/{formattedParams}/lookup?locale={m_culture.Name}&country={m_culture.Name}&language={m_culture.Name}&source={formattedSource}&extras={formattedExtras}"; return(await m_client.Value.QueryMusicServiceAsync <GrooveResponse>(url)); }
/// <summary> /// Main method to search through the Music Catalog /// </summary> /// <param name="keyword">What to search</param> /// <param name="maxResults">Maximum number of results</param> /// <param name="filters">Specifies what to search in the catalog</param> /// <returns>The list of items found in the catalog</returns> public async Task <GrooveResponse> SearchAsync(string keyword, int maxResults, IEnumerable <FilterType> filters) { if (maxResults > 25) { throw new ArgumentException("maxResults must be greater than 0 and less than 25", "maxResults"); } var aggregatedFilters = ParametersFormatter.Format(filters.Select(x => x.ToString())); var url = $"1/content/music/search?q={Uri.EscapeDataString(keyword)}&country={m_culture.Name}&language={m_culture.Name}&maxitems={maxResults}&filters={aggregatedFilters}"; return(await m_client.Value.QueryMusicServiceAsync <GrooveResponse>(url)); }