using System.Threading; using System.Threading.Tasks; using SpotifyAPI.Web.Http; using URLs = SpotifyAPI.Web.SpotifyUrls; namespace SpotifyAPI.Web { public class TracksClient : APIClient, ITracksClient { public TracksClient(IAPIConnector apiConnector) : base(apiConnector) { } public Task Get(string trackId, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(trackId, nameof(trackId)); return API.Get(URLs.Track(trackId), cancel); } public Task Get(string trackId, TrackRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(trackId, nameof(trackId)); Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Track(trackId), request.BuildQueryParams(), cancel); } public Task GetAudioAnalysis(string trackId, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(trackId, nameof(trackId)); return API.Get(URLs.AudioAnalysis(trackId), cancel); } public Task GetAudioFeatures(string trackId, CancellationToken cancel = default) { Ensure.ArgumentNotNullOrEmptyString(trackId, nameof(trackId)); return API.Get(URLs.AudioFeatures(trackId), cancel); } public Task GetSeveral(TracksRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.Tracks(), request.BuildQueryParams(), cancel); } public Task GetSeveralAudioFeatures(TracksAudioFeaturesRequest request, CancellationToken cancel = default) { Ensure.ArgumentNotNull(request, nameof(request)); return API.Get(URLs.AudioFeatures(), request.BuildQueryParams(), cancel); } } }