Example #1
0
        /// <summary>
        /// JToken constructor
        /// </summary>
        /// <param name="token"></param>
        public Playlist(JToken token)
        {
            /* Simple fields */
            Collaborative = token.Value <bool?>("collaborative") ?? false;
            Description   = token.Value <string>("description") ?? string.Empty;
            Href          = token.Value <string>("href") ?? string.Empty;
            Id            = token.Value <string>("id") ?? string.Empty;
            Name          = token.Value <string>("name") ?? string.Empty;
            Public        = token.Value <bool?>("public") ?? true;
            Snapshot_Id   = token.Value <string>("snapshot_id") ?? string.Empty;
            Uri           = token.Value <string>("uri") ?? string.Empty;

            /* External URLS handling */
            JObject exturls = token.Value <JObject>("external_urls");

            if (exturls != null)
            {
                foreach (JProperty x in exturls.Properties())
                {
                    External_Urls.Add(x.Name, x.Value <JToken>().ToString());
                }
            }

            /* Follower Handling */
            JObject follower = token.Value <JObject>("followers");

            if (follower != null)
            {
                Followers = new Followers(follower);
            }

            /* Image Handling */
            JArray images = token.Value <JArray>("images");

            if (images != null)
            {
                List <Image> ims = new List <Image>();
                foreach (JObject jobj in images.Values <JObject>())
                {
                    Image i = new Image(jobj);
                    ims.Add(i);
                }
                Images = ims.ToArray();
            }

            /* Owner Handling */
            JToken owner = token.Value <JToken>("owner");

            if (owner != null && owner.HasValues)
            {
                Owner = new User(owner);
            }


            /* Track Handling */
            JObject tracks = token.Value <JObject>("tracks");

            Total = tracks.Value <int?>("total") ?? -1;
            IEnumerable <JToken> trackValues = tracks.Values().ToList();

            // >2 properties means its really full of tracks
            if (tracks.Values().Count() > 2)
            {
                //TODO handle tracks
                //Paging a bitch, yo
            }
        }