using System; using System.Collections.Generic; namespace SpotifyAPI.Web { public class RecommendationsRequest : RequestParams { public RecommendationsRequest() { Min = new Dictionary(); Max = new Dictionary(); Target = new Dictionary(); SeedArtists = new List(); SeedGenres = new List(); SeedTracks = new List(); } [QueryParam("seed_artists")] public IList SeedArtists { get; } [QueryParam("seed_genres")] public IList SeedGenres { get; } [QueryParam("seed_tracks")] public IList SeedTracks { get; } [QueryParam("limit")] public int? Limit { get; set; } [QueryParam("market")] public string Market { get; set; } public Dictionary Min { get; } public Dictionary Max { get; } public Dictionary Target { get; } protected override void CustomEnsure() { if (SeedArtists.Count == 0 && SeedGenres.Count == 0 && SeedTracks.Count == 0) { throw new ArgumentException("At least one of the seeds has to be non-empty"); } } protected override void AddCustomQueryParams(Dictionary queryParams) { Ensure.ArgumentNotNull(queryParams, nameof(queryParams)); foreach (KeyValuePair pair in Min) { queryParams.Add($"min_{pair.Key}", pair.Value); } foreach (KeyValuePair pair in Min) { queryParams.Add($"max_{pair.Key}", pair.Value); } foreach (KeyValuePair pair in Min) { queryParams.Add($"target_{pair.Key}", pair.Value); } } } }