Exemple #1
0
        /// <summary>
        /// Gets a status message (tweet) from the specified <var>JsonObject</var>.
        /// </summary>
        /// <param name="obj">The instance of <var>JsonObject</var> to parse.</param>
        public static TwitterStatusMessage Parse(JsonObject obj)
        {
            // Error checking
            if (obj == null)
            {
                return(null);
            }
            if (obj.HasValue("error"))
            {
                throw TwitterException.Parse(obj.GetArray("error"));
            }
            if (obj.HasValue("errors"))
            {
                throw TwitterException.Parse(obj.GetArray("errors"));
            }

            TwitterStatusMessage msg = new TwitterStatusMessage(obj)
            {
                Id          = obj.GetInt64("id"),
                Text        = obj.GetString("text"),
                Source      = obj.GetString("source"),
                IsTruncated = obj.GetBoolean("truncated")
            };

            // Twitter has some strange date formats
            msg.CreatedAt = TwitterUtils.ParseDateTimeUtc(obj.GetString("created_at"));

            // Parse the reply information
            if (obj.HasValue("in_reply_to_status_id"))
            {
                msg.InReplyTo = new TwitterReplyTo {
                    StatusId    = obj.GetInt64("in_reply_to_status_id"),
                    StatusIdStr = obj.GetString("in_reply_to_status_id_str"),
                    UserId      = obj.GetInt64("in_reply_to_user_id"),
                    UserIdStr   = obj.GetString("in_reply_to_user_id_str"),
                    ScreenName  = obj.GetString("in_reply_to_screen_name")
                };
            }

            msg.RetweetCount  = obj.GetInt32("retweet_count");
            msg.FavoriteCount = obj.GetInt32("favorite_count");

            // Related to the authenticating user
            msg.HasFavorited = obj.GetBoolean("favorited");
            msg.HasRetweeted = obj.GetBoolean("retweeted");

            // Parse the entities (if any)
            msg.Entities = obj.GetObject("entities", TwitterStatusMessageEntities.Parse);

            // For some weird reason Twitter flips the coordinates by writing longitude before latitude
            // See: https://dev.twitter.com/docs/platform-objects/tweets#obj-coordinates)
            msg.Coordinates = TwitterCoordinates.Parse(obj.GetObject("coordinates"));

            // See: https://dev.twitter.com/docs/platform-objects/tweets#obj-contributors

            /*if (tweet.contributors != null) {
             *  List<TwitterContributor> contributors = new List<TwitterContributor>();
             *  foreach (dynamic contributor in tweet.contributors) {
             *      contributors.Add(new TwitterContributor {
             *          UserId = contributor.id,
             *          ScreenName = contributor.screen_name
             *      });
             *  }
             *  msg.Contributors = contributors.ToArray();
             * }*/

            msg.User  = obj.GetObject("user", TwitterUser.Parse);
            msg.Place = obj.GetObject("place", TwitterPlace.Parse);

            msg.IsPossiblyOffensive = obj.GetBoolean("possibly_sensitive");
            msg.Language            = obj.GetString("lang");

            return(msg);
        }