void ParseJson(string json) { JsonData jsonObj = JsonMapper.ToObject(json); if (jsonObj == null || jsonObj.InstObject == null) { EntityType = StreamEntityType.Unknown; return; } var inst = jsonObj.InstObject; try { if (inst.ContainsKey("control")) { EntityType = StreamEntityType.Control; Entity = new Control(jsonObj); } else if (inst.ContainsKey("delete")) { EntityType = StreamEntityType.Delete; Entity = new Delete(jsonObj); } else if (inst.ContainsKey("direct_message")) { EntityType = StreamEntityType.DirectMessage; var dmObj = jsonObj.GetValue<JsonData>("direct_message"); Entity = new DirectMessage(dmObj); } else if (inst.ContainsKey("disconnect")) { EntityType = StreamEntityType.Disconnect; Entity = new Disconnect(jsonObj); } else if (inst.ContainsKey("event")) { EntityType = StreamEntityType.Event; Entity = new Event(jsonObj); } else if (inst.ContainsKey("for_user")) { EntityType = StreamEntityType.ForUser; Entity = new ForUser(jsonObj); } else if (inst.ContainsKey("friends") && inst.Count == 1) { EntityType = StreamEntityType.FriendsList; Entity = new FriendsList(jsonObj); } else if (inst.ContainsKey("geo_scrub")) { EntityType = StreamEntityType.GeoScrub; Entity = new GeoScrub(jsonObj); } else if (inst.ContainsKey("limit")) { EntityType = StreamEntityType.Limit; Entity = new Limit(jsonObj); } else if (inst.ContainsKey("warning") && inst.ContainsKey("percent_full")) { EntityType = StreamEntityType.Stall; Entity = new Stall(jsonObj); } else if (inst.ContainsKey("status_withheld")) { EntityType = StreamEntityType.StatusWithheld; Entity = new StatusWithheld(jsonObj); } else if (inst.ContainsKey("warning") && inst.ContainsKey("user_id")) { EntityType = StreamEntityType.TooManyFollows; Entity = new TooManyFollows(jsonObj); } else if (inst.ContainsKey("retweeted")) { EntityType = StreamEntityType.Status; Entity = new Status(jsonObj); } else if (inst.ContainsKey("user_withheld")) { EntityType = StreamEntityType.UserWithheld; Entity = new UserWithheld(jsonObj); } else { EntityType = StreamEntityType.Unknown; } } catch (Exception ex) { string parseError = string.Format( "Error parsing twitter message. Please create a new issue on the LINQ to Twitter site at https://linqtotwitter.codeplex.com/ " + "with this info. \n\nMessage Type: {0}, Message Text:\n {1} \nException Details: {2} \n", EntityType, json, ex.ToString()); EntityType = StreamEntityType.ParseError; Entity = parseError; if (TwitterExecute.Log != null) TwitterExecute.Log.WriteLine(parseError); } }
void ParseJson(string json) { JsonData jsonObj = JsonMapper.ToObject(json); if (jsonObj == null || jsonObj.InstObject == null) { EntityType = StreamEntityType.Unknown; return; } var inst = jsonObj.InstObject; try { if (inst.ContainsKey("control")) { EntityType = StreamEntityType.Control; Entity = new Control(jsonObj); } else if (inst.ContainsKey("delete")) { EntityType = StreamEntityType.Delete; Entity = new Delete(jsonObj); } else if (inst.ContainsKey("direct_message")) { EntityType = StreamEntityType.DirectMessage; var dmObj = jsonObj.GetValue <JsonData>("direct_message"); Entity = new DirectMessage(dmObj); } else if (inst.ContainsKey("disconnect")) { EntityType = StreamEntityType.Disconnect; Entity = new Disconnect(jsonObj); } else if (inst.ContainsKey("event")) { EntityType = StreamEntityType.Event; Entity = new Event(jsonObj); } else if (inst.ContainsKey("for_user")) { EntityType = StreamEntityType.ForUser; Entity = new ForUser(jsonObj); } else if (inst.ContainsKey("friends") && inst.Count == 1) { EntityType = StreamEntityType.FriendsList; Entity = new FriendsList(jsonObj); } else if (inst.ContainsKey("geo_scrub")) { EntityType = StreamEntityType.GeoScrub; Entity = new GeoScrub(jsonObj); } else if (inst.ContainsKey("limit")) { EntityType = StreamEntityType.Limit; Entity = new Limit(jsonObj); } else if (inst.ContainsKey("warning") && inst.ContainsKey("percent_full")) { EntityType = StreamEntityType.Stall; Entity = new Stall(jsonObj); } else if (inst.ContainsKey("status_withheld")) { EntityType = StreamEntityType.StatusWithheld; Entity = new StatusWithheld(jsonObj); } else if (inst.ContainsKey("warning") && inst.ContainsKey("user_id")) { EntityType = StreamEntityType.TooManyFollows; Entity = new TooManyFollows(jsonObj); } else if (inst.ContainsKey("retweeted")) { EntityType = StreamEntityType.Status; Entity = new Status(jsonObj); } else if (inst.ContainsKey("user_withheld")) { EntityType = StreamEntityType.UserWithheld; Entity = new UserWithheld(jsonObj); } else { EntityType = StreamEntityType.Unknown; } } catch (Exception ex) { string parseError = string.Format( "Error parsing twitter message. Please create a new issue on the LINQ to Twitter site at https://linqtotwitter.codeplex.com/ " + "with this info. \n\nMessage Type: {0}, Message Text:\n {1} \nException Details: {2} \n", EntityType, json, ex.ToString()); EntityType = StreamEntityType.ParseError; Entity = parseError; if (TwitterExecute.Log != null) { TwitterExecute.Log.WriteLine(parseError); } } }