internal T DeserializeContent <T>(string content) { if (typeof(T) == typeof(TwitterTrends)) { return(DeserializeTrends <T>(content)); } if (typeof(T) == typeof(TwitterLocalTrends)) { var instance = JArray.Parse(content); var inner = instance.First.ToString(); return(DeserializeSingle <T>(inner)); } if (typeof(T) == typeof(TwitterStreamArtifact)) { content = content.Trim('\n'); if (content.StartsWith("{\"friends\":[")) { var friends = (JArray)JObject.Parse(content)["friends"]; if (friends != null) { var result = new TwitterUserStreamFriends { RawSource = content }; var ids = friends.Select(token => token.Value <long>()).ToList(); result.Ids = ids; return((T)(ITwitterModel)result); } } // {"delete":{"status":{"user_id_str":"14363427","id_str":"45331017418014721","id":45331017418014721,"user_id":14363427}}} else if (content.StartsWith("{\"delete\":{\"status\":")) { var deleted = JObject.Parse(content)["delete"]["status"]; if (deleted != null) { var result = new TwitterUserStreamDeleteStatus { RawSource = content, StatusId = deleted["id"].Value <long>(), UserId = deleted["user_id"].Value <int>() }; return((T)(ITwitterModel)result); } } else if (content.StartsWith("{\"delete\":{\"direct_message\":")) { var deleted = JObject.Parse(content)["delete"]["direct_message"]; if (deleted != null) { var result = new TwitterUserStreamDeleteDirectMessage { RawSource = content, DirectMessageId = deleted["id"].Value <long>(), UserId = deleted["user_id"].Value <int>() }; return((T)(ITwitterModel)result); } } else { var artifact = JObject.Parse(content); if (artifact["target_object"] != null) { return(DeserializeUserStreamEvent <T>(content)); } if (artifact["user"] != null) { var tweet = DeserializeSingle <TwitterStatus>(content); var @event = new TwitterUserStreamStatus { Status = tweet, RawSource = content }; return((T)(ITwitterModel)@event); } if (artifact["direct_message"] != null) { var json = artifact["direct_message"].ToString(); var dm = DeserializeSingle <TwitterDirectMessage>(json); var @event = new TwitterUserStreamDirectMessage { DirectMessage = dm, RawSource = json }; return((T)(ITwitterModel)@event); } var unknown = new TwitterStreamArtifact { RawSource = content }; return((T)(ITwitterModel)unknown); } } if (typeof(T) == typeof(IEnumerable <ITwitterModel>)) { return(DeserializeTrends <T>(content)); } var wantsCollection = typeof(IEnumerable).IsAssignableFrom(typeof(T)); var deserialized = wantsCollection ? DeserializeCollection <T>(content) : DeserializeSingle <T>(content); return(deserialized); }
void Kbtter_StreamingStatus(TwitterUserStreamStatus obj) { AddStatusToTimeline(obj.Status); }
void Kbtter_StreamingStatus(TwitterUserStreamStatus obj) { _stcache.Add(obj.Status); }