예제 #1
0
        /// <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));
        }
예제 #2
0
        /// <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));
        }
예제 #3
0
        /// <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));
        }
예제 #4
0
        /// <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));
        }