using System.Net; using System.Collections.Generic; using System.Threading.Tasks; using SpotifyAPI.Web.Http; namespace SpotifyAPI.Web { public class LibraryClient : APIClient, ILibraryClient { public LibraryClient(IAPIConnector apiConnector) : base(apiConnector) { } public Task> CheckAlbums(LibraryCheckAlbumsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get>(SpotifyUrls.LibraryAlbumsContains(), request.BuildQueryParams()); } public Task> CheckShows(LibraryCheckShowsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get>(SpotifyUrls.LibraryShowsContains(), request.BuildQueryParams()); } public Task> CheckTracks(LibraryCheckTracksRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get>(SpotifyUrls.LibraryTracksContains(), request.BuildQueryParams()); } public Task> GetAlbums() { return API.Get>(SpotifyUrls.LibraryAlbums()); } public Task> GetAlbums(LibraryAlbumsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get>(SpotifyUrls.LibraryAlbums(), request.BuildQueryParams()); } public Task> GetShows() { return API.Get>(SpotifyUrls.LibraryShows()); } public Task> GetShows(LibraryShowsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get>(SpotifyUrls.LibraryShows(), request.BuildQueryParams()); } public Task> GetTracks() { return API.Get>(SpotifyUrls.LibraryTracks()); } public Task> GetTracks(LibraryTracksRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get>(SpotifyUrls.LibraryTracks(), request.BuildQueryParams()); } public async Task RemoveAlbums(LibraryRemoveAlbumsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); var statusCode = await API.Delete(SpotifyUrls.LibraryAlbums(), null, request.BuildBodyParams()).ConfigureAwait(false); return statusCode == HttpStatusCode.OK; } public async Task RemoveShows(LibraryRemoveShowsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); var statusCode = await API.Delete(SpotifyUrls.LibraryShows(), null, request.BuildBodyParams()).ConfigureAwait(false); return statusCode == HttpStatusCode.OK; } public async Task RemoveTracks(LibraryRemoveTracksRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); var statusCode = await API.Delete(SpotifyUrls.LibraryTracks(), null, request.BuildBodyParams()).ConfigureAwait(false); return statusCode == HttpStatusCode.OK; } public async Task SaveAlbums(LibrarySaveAlbumsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); var statusCode = await API.Put(SpotifyUrls.LibraryAlbums(), request.BuildQueryParams(), null).ConfigureAwait(false); return statusCode == HttpStatusCode.OK; } public async Task SaveShows(LibrarySaveShowsRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); var statusCode = await API.Put(SpotifyUrls.LibraryShows(), request.BuildQueryParams(), null).ConfigureAwait(false); return statusCode == HttpStatusCode.OK; } public async Task SaveTracks(LibrarySaveTracksRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); var statusCode = await API.Put(SpotifyUrls.LibraryTracks(), request.BuildQueryParams(), null).ConfigureAwait(false); return statusCode == HttpStatusCode.OK; } } }