Esempio n. 1
0
 public SpotifyService(IConfiguration configuration)
 {
     _configuration = configuration;
     _httpClient    = new HttpClient();
     _auth          = new ClientCredentialsAuthorizationApi(_httpClient, configuration);
     _api           = new ArtistsApi(_httpClient, _auth);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 10
0
        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
        }
Esempio n. 13
0
        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}");
        }