using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using IF.Lastfm.Core.Api.Helpers;
using Newtonsoft.Json.Linq;
namespace IF.Lastfm.Core.Objects
{
///
/// Todo bio, tour, similar, stats, streamable
///
public class Artist : ILastFmObject
{
#region Properties
public string Name { get; set; }
public string Mbid { get; set; }
public Uri Url { get; set; }
public bool OnTour { get; set; }
public IEnumerable Tags { get; set; }
public LastImageCollection Images { get; set; }
#endregion
internal static Artist ParseJToken(JToken token)
{
var a = new Artist();
a.Name = token.Value("name");
a.Mbid = token.Value("mbid");
a.Url = new Uri(token.Value("url"), UriKind.Absolute);
a.OnTour = Convert.ToBoolean(token.Value("ontour"));
var tagsToken = token.SelectToken("tags");
if (tagsToken != null && tagsToken.HasValues)
{
a.Tags = tagsToken.SelectToken("tag").Children().Select(Tag.ParseJToken);
}
var images = token.SelectToken("image");
if (images != null && images.HasValues)
{
var imageCollection = LastImageCollection.ParseJToken(images);
a.Images = imageCollection;
}
return a;
}
internal static string GetNameFromJToken(JToken artistToken)
{
var name = artistToken.Value("name");
if (string.IsNullOrEmpty(name))
{
name = artistToken.Value("#text");
}
return name;
}
}
}