private string AddRecommendedSeedApiParmeters(RecommendedTracksSeed getRecommendedSongs) { return($"{(!getRecommendedSongs.SeedTrackUris.IsNullOrEmpty() ? $"seed_tracks={ HttpUtility.UrlEncode(ConvertToCommaDelimitedString(getRecommendedSongs.SeedTrackUris))}&" : string.Empty)}{(!getRecommendedSongs.SeedArtistUris.IsNullOrEmpty() ? $"seed_artists={ HttpUtility.UrlEncode(ConvertToCommaDelimitedString(getRecommendedSongs.SeedArtistUris))}&" : string.Empty)}{(!string.IsNullOrWhiteSpace(getRecommendedSongs.Market) ? $"{getRecommendedSongs.Market}" : string.Empty)}"); }
public async Task <List <Domain.Track> > GetRecommendedTracksAsync(PartyGoer partyGoer, RecommendedTracksSeed recommendedTrackSeeds) { List <string> seedTrackUris = recommendedTrackSeeds?.SeedTrackUris; List <string> seedArtistUris = recommendedTrackSeeds?.SeedArtistUris; if (seedTrackUris?.Count + seedArtistUris?.Count > 5 || seedTrackUris?.Count + seedArtistUris?.Count == 0) { throw new ArgumentException("The count of seeds need to be between 1 and 5"); } recommendedTrackSeeds.SeedTrackUris = seedTrackUris.Select(p => p.Replace("spotify:track:", "").Split("+").First()).ToList(); var response = await SendHttpRequestAsync(partyGoer.GetSpotifyId(), _apiEndpoints[ApiEndpointType.GetRecommendedTracks], AddRecommendedSeedApiParmeters(recommendedTrackSeeds), true); RecommendedTracks tracks = await response.Content.ReadFromJsonAsync <RecommendedTracks>(); List <Domain.Track> recommendedSongs = new List <Domain.Track>(); foreach (SpotifyModels.Track track in tracks.Tracks) { if (track.Markets.Contains(partyGoer.GetMarket()) && track != null) { recommendedSongs.Add(new Domain.Track { AlbumImageUrl = null, Artists = track.Artists.Select(p => new SpotifyModels.Artist { Id = p.Id, Name = p.Name }).ToList(), Explicit = track.Explicit, Length = track.Duration, Name = track.Name, Id = track.Id }); } } return(recommendedSongs.ToList()); }