public Task<ArtistAlbum> GetAlbum(string albumId, CancellationToken cancellationToken)
{
return _client
.GetAsync(new Uri("http://ws.spotify.com/lookup/1/.json?uri=" + albumId + "&extras=trackdetail"), cancellationToken)
.ContinueWith(requestTask =>
{
var response = requestTask.Result;
response.EnsureSuccessStatusCode();
var content = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<dynamic>(content);
dynamic artistIdValue = result["album"]["artist-id"];
string artistId = artistIdValue != null ? artistIdValue.Value : null;
string artistName = result["album"]["artist"].Value;
string albumName = result["album"]["name"].Value;
var songs = new List<Song>();
foreach (var song in result["album"]["tracks"])
{
songs.Add(new Song
{
Id = song["href"].Value,
Name = song["name"].Value,
Provider = ProviderName,
TotalSeconds = (int)song["length"].Value,
Album = new Album
{
Id = result["album"]["href"].Value,
Provider = ProviderName,
Name = albumName,
CoverArt = _imageProvider.GetCoverArtUri(result["album"]["href"].Value) ?? string.Empty
},
Artist = new Artist
{
Id = artistId,
Name = artistName
}
});
}
return new ArtistAlbum
{
Album = new Album
{
Id = result["album"]["href"].Value,
Provider = ProviderName,
Name = albumName,
CoverArt = _imageProvider.GetCoverArtUri(result["album"]["href"].Value) ?? string.Empty
},
Artist = new Artist
{
Id = artistId,
Name = artistName
},
Songs = songs.ToArray()
};
});
}