public Task<IEnumerable<Album>> GetAlbums(string artistId, CancellationToken cancellationToken)
{
return _client
.GetAsync(new Uri("http://ws.spotify.com/lookup/1/.json?uri=" + artistId + "&extras=album"), cancellationToken)
.ContinueWith(requestTask =>
{
var response = requestTask.Result;
response.EnsureSuccessStatusCode();
var content = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<dynamic>(content);
var albums = new List<Album>();
if (result["artist"] != null)
{
dynamic items = result["artist"]["albums"].HasValues ? result["artist"]["albums"] : new dynamic[0];
foreach (var item in items)
{
dynamic album = item["album"];
if (album != null)
{
albums.Add(new Album
{
Id = album["href"],
Provider = ProviderName,
Name = album["name"],
CoverArt = _imageProvider.GetCoverArtUri(Convert.ToString(album["href"] ?? string.Empty)) ?? string.Empty
});
}
}
}
return (IEnumerable<Album>)albums;
});
}