using System; 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() { return API.Get(URLs.Categories()); } public Task GetCategories(CategoriesRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Categories(), request.BuildQueryParams()); } public Task GetCategory(string categoryId) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); return API.Get(URLs.Category(categoryId)); } public Task GetCategory(string categoryId, CategoryRequest request) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Category(categoryId), request.BuildQueryParams()); } public Task GetCategoryPlaylists(string categoryId) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); return API.Get(URLs.CategoryPlaylists(categoryId)); } public Task GetCategoryPlaylists(string categoryId, CategoriesPlaylistsRequest request) { Ensure.ArgumentNotNullOrEmptyString(categoryId, nameof(categoryId)); Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.CategoryPlaylists(categoryId), request.BuildQueryParams()); } public Task GetRecommendations(RecommendationsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Recommendations(), request.BuildQueryParams()); } public Task GetRecommendationGenres() { return API.Get(URLs.Recommendations()); } public Task GetNewReleases() { return API.Get(URLs.NewReleases()); } public Task GetNewReleases(NewReleasesRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.NewReleases(), request.BuildQueryParams()); } public Task GetFeaturedPlaylists() { return API.Get(URLs.FeaturedPlaylists()); } public Task GetFeaturedPlaylists(FeaturedPlaylistsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.FeaturedPlaylists(), request.BuildQueryParams()); } } }