using System.Threading; using System.Threading.Tasks; using SpotifyAPI.Web.Http; using URLs = SpotifyAPI.Web.SpotifyUrls; namespace SpotifyAPI.Web { public class BrowseClient : APIClient, IBrowseClient { public BrowseClient(IAPIConnector apiConnector) : base(apiConnector) { } public Task GetCategories(CancellationToken cancel = default) { return API.Get(URLs.Categories(), cancel); } public Task GetCategories(CategoriesRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Categories(), request.BuildQueryParams(), cancel); } public Task GetCategory(string categoryId, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); return API.Get(URLs.Category(categoryId), cancel); } public Task GetCategory(string categoryId, CategoryRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Category(categoryId), request.BuildQueryParams(), cancel); } public Task GetCategoryPlaylists(string categoryId, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); return API.Get(URLs.CategoryPlaylists(categoryId), cancel); } public Task GetCategoryPlaylists(string categoryId, CategoriesPlaylistsRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.CategoryPlaylists(categoryId), request.BuildQueryParams(), cancel); } public Task GetRecommendations(RecommendationsRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Recommendations(), request.BuildQueryParams(), cancel); } public Task GetRecommendationGenres(CancellationToken cancel = default) { return API.Get(URLs.RecommendationGenres(), cancel); } public Task GetNewReleases(CancellationToken cancel = default) { return API.Get(URLs.NewReleases(), cancel); } public Task GetNewReleases(NewReleasesRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.NewReleases(), request.BuildQueryParams(), cancel); } public Task GetFeaturedPlaylists(CancellationToken cancel = default) { return API.Get(URLs.FeaturedPlaylists(), cancel); } public Task GetFeaturedPlaylists(FeaturedPlaylistsRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.FeaturedPlaylists(), request.BuildQueryParams(), cancel); } } }