public SpotifyService(IConfiguration configuration) { _configuration = configuration; _httpClient = new HttpClient(); _auth = new ClientCredentialsAuthorizationApi(_httpClient, configuration); _api = new ArtistsApi(_httpClient, _auth); }
private static async Task AsyncMain(string[] args) { var http = new HttpClient(); var auth = new ClientCredentialsAuthorizationApi(http); var api = new ArtistsApi(http, auth); // Get an artist by Spotify Artist Id dynamic response = await api.GetArtist("1tpXaFf2F55E7kVJON4j4G"); Console.WriteLine(response); }
public async Task GetArtistsTopTracks_FromAppToken_SpotifyErrorException() { // arrange const string artistId = "1tpXaFf2F55E7kVJON4j4G"; const string market = SpotifyCountryCodes._From_Token; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.GetArtistsTopTracks(artistId, market); }
public async Task SearchArtists_ArtistName_FirstArtistNameMatches() { // arrange const string artistName = "Radiohead"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.SearchArtists(artistName, 3); // assert Assert.AreEqual(artistName, result.Artists.Items[0].Name); }
public async Task GetArtistsAlbums_Limit2_ItemsLength2() { // arrange const string artistId = "1tpXaFf2F55E7kVJON4j4G"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.GetArtistsAlbums(artistId, country : SpotifyCountryCodes.New_Zealand, limit : 2); // assert Assert.AreEqual(2, result.Items.Length); }
public async Task GetRelatedArtists_When_Given_Valid_ArtistId_Returns_Artists() { // arrange const string artistId = "6lcwlkAjBPSKnFBZjjZFJs"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.GetRelatedArtists(artistId); // assert Assert.AreNotSame(result.Length, 0); }
public async Task GetArtistsTopTracks_NZCountryCode_ArtistIdMatches() { // arrange const string artistId = "1tpXaFf2F55E7kVJON4j4G"; const string market = SpotifyCountryCodes.New_Zealand; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.GetArtistsTopTracks(artistId, market); // assert Assert.AreEqual(artistId, result[0].Artists[0].Id); }
public async Task GetArtists_2ValidArtists_ArtistIdsMatch() { // arrange string[] artistIds = new[] { "1tpXaFf2F55E7kVJON4j4G", "0oSGxfWSnnOXhD2fKuz2Gy" }; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.GetArtists(artistIds); // assert Assert.AreEqual(artistIds[0], result[0].Id); Assert.AreEqual(artistIds[1], result[1].Id); }
public async Task GetArtist_ArtistsId_CorrectArtistName() { // arrange const string artistId = "1tpXaFf2F55E7kVJON4j4G"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new ArtistsApi(http, accounts); // act var response = await api.GetArtist(artistId); // assert Assert.AreEqual("Black Rebel Motorcycle Club", response.Name); }
public async Task <Track> FindSongForName(string name) { // HttpClient and AccountsService can be reused. // Tokens are automatically cached and refreshed var httpClient = new HttpClient(); var accountsService = new AccountsService(httpClient); // Get an artist by Spotify Artist Id var artistsApi = new ArtistsApi(httpClient, accountsService); var searchResult = await artistsApi.SearchArtists("The Guy Who Sings Your Name"); var artists = searchResult.Artists.Items; if (!artists.Any()) { throw new Exception("Could not find any artists"); } var guyWhoSingsYourNameOverAndOverAgain = artists.First(); var artistId = guyWhoSingsYourNameOverAndOverAgain.Id; var accessToken = await accountsService.GetAccessToken(); var albumApi = new MyAlbumsApi(httpClient, accessToken); var albumsByArtistId = await albumApi.GetAlbumsByArtistId(artistId); foreach (var album in albumsByArtistId) { var albumTracks = await GetAllAlbumTracks(albumApi, album); foreach (var albumTrack in albumTracks) { if (albumTrack.Name.Contains(name)) { return(albumTrack); } } } return(new Track()); }
public async Task GetArtistsAlbums_IncludeGroupsSingles_ItemsAllSingles() { // arrange const string artistId = "1tpXaFf2F55E7kVJON4j4G"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var artists = new ArtistsApi(http, accounts); // act var result = await artists.GetArtistsAlbums( artistId, country : SpotifyCountryCodes.New_Zealand, includeGroups : new[] { SpotifyArtistAlbumGroups.Single }); // assert Assert.IsTrue(result.Items.All(a => a.AlbumType == SpotifyArtistAlbumGroups.Single)); }
public async Task TwoCompetingAccessTokenRequestsSameHttpClientGetConsistentResults() { const string artistId = "1tpXaFf2F55E7kVJON4j4G"; var http1 = new HttpClient(); var accounts1 = new AccountsService(http1, TestsHelper.GetLocalConfig()); var artists1 = new ArtistsApi(http1, accounts1); var accounts2 = new AccountsService(http1, TestsHelper.GetLocalConfig()); var artists2 = new ArtistsApi(http1, accounts2); // act await artists1.GetArtist(artistId); await artists2.GetArtist(artistId); // assert // no error }
public async Task Usage1() { // HttpClient and AccountsService can be reused. // Tokens are automatically cached and refreshed var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); // Get an artist by Spotify Artist Id var artists = new ArtistsApi(http, accounts); Artist artist = await artists.GetArtist("1tpXaFf2F55E7kVJON4j4G"); string artistName = artist.Name; Trace.WriteLine($"Artist.Name = {artistName}"); // Get recommendations based on seed Artist Ids var browse = new BrowseApi(http, accounts); RecommendationsResult result = await browse.GetRecommendations(new[] { "1tpXaFf2F55E7kVJON4j4G", "4Z8W4fKeB5YxbusRsdQVPb" }, null, null); string firstTrackName = result.Tracks[0].Name; Trace.WriteLine($"First recommendation = {firstTrackName}"); // Page through a list of tracks in a Playlist var playlists = new PlaylistsApi(http, accounts); int limit = 100; PlaylistPaged playlist = await playlists.GetTracks("4h4urfIy5cyCdFOc1Ff4iN", limit : limit); int offset = 0; int j = 0; // using System.Linq while (playlist.Items.Any()) { for (int i = 0; i < playlist.Items.Length; i++) { Trace.WriteLine($"Track #{j += 1}: {playlist.Items[i].Track.Artists[0].Name} / {playlist.Items[i].Track.Name}"); } offset += limit; playlist = await playlists.GetTracks("4h4urfIy5cyCdFOc1Ff4iN", limit : limit, offset : offset); } }
public async Task Usage1() { // HttpClient and AccountsService can be reused. // Tokens are automatically cached and refreshed var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); // Get an artist by Spotify Artist Id var artists = new ArtistsApi(http, accounts); var artist = await artists.GetArtist("1tpXaFf2F55E7kVJON4j4G"); string artistName = artist.Name; Trace.WriteLine($"Artist.Name = {artistName}"); // Get recommendations based on seed Artist Ids var browse = new BrowseApi(http, accounts); var result = await browse.GetRecommendations(new[] { "1tpXaFf2F55E7kVJON4j4G", "4Z8W4fKeB5YxbusRsdQVPb" }, null, null); string firstTrackName = result.Tracks[0].Name; Trace.WriteLine($"First recommendation = {firstTrackName}"); }