private void StreamingCallback(object sender, StreamEventArgs e) { var json = Twitch.Utility.DynamicJson.Parse(e.Data); Twitter.Status status; try { status = new Twitter.Status(json.ToString()); } catch { if (!this.IsTolerance) throw new ApplicationException( "不明なメッセージが発行されました。\"" + json.ToString() + "\"" + Environment.NewLine + "この種の予期しないメッセージに対して例外を発生させない場合は、このStreamの IsTolerance プロパティを true に設定してください。"); return; } this.OnStatusUpdated( new StatusUpdatedEventArgs { Status = status } ); }
/// <summary> /// イベントの振り分けを行います。 /// </summary> private void StreamingCallback(object sender, StreamEventArgs e) { var json = Twitch.Utility.DynamicJson.Parse(e.Data); #region Filing // Events if (json.IsDefined("event")) { #region Events switch ((string)json["event"]) { case "block": this.OnBlocked( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "unblock": this.OnUnBlocked( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "favorite": this.OnFavorited( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = new Twitter.Status(json["target_object"].ToString()), CreatedAt = json["created_at"], } ); break; case "unfavorite": this.OnUnFavorited( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = new Twitter.Status(json["target_object"].ToString()), CreatedAt = json["created_at"], } ); break; case "follow": this.OnFollowed( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "unfollow": this.OnUnFollowed( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_created": this.OnListCreated( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_destroyed": this.OnListDestoryed( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_updated": this.OnListUpdated( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_member_added": this.OnListMemberAdded( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_member_removed": this.OnListMemberRemoved( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_user_subscribed": this.OnListUserSubscribed( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "list_user_unsubscribed": this.OnListUserUnSubscribed( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; case "user_update": this.OnUserUpdated( new StreamEventEventArgs { Target = new Twitter.User(json["target"].ToString()), Source = new Twitter.User(json["source"].ToString()), Event = json["event"], TargetObject = null, CreatedAt = json["created_at"], } ); break; default: if (!this.IsTolerance) throw new ApplicationException( "不明なイベントが発行されました。\"" + (string)json["event"] + "\"" + Environment.NewLine + "この種の予期しないメッセージに対して例外を発生させない場合は、このStreamの IsTolerance プロパティを true に設定してください。"); break; } #endregion } // Friends lists else if (json.IsDefined("friends")) { if (this.IsReceiveFriendsList) this.OnSendFriendsListsMessaged( new FriendsListsEventArgs { IntList = (Int64[])json } ); else return; } // Friends lists (str) else if (json.IsDefined("friends_str")) { if (this.IsReceiveFriendsList) this.OnSendFriendsListsMessaged( new FriendsListsEventArgs { StringList = json } ); else return; } // Status else { Twitter.Status status; try { status = new Twitter.Status(json.ToString()); } catch { if (!this.IsTolerance) throw new ApplicationException( "不明なメッセージが発行されました。\"" + json.ToString() + "\"" + Environment.NewLine + "この種の予期しないメッセージに対して例外を発生させない場合は、このStreamの IsTolerance プロパティを true に設定してください。"); return; } this.OnStatusUpdated( new StatusUpdatedEventArgs { Status = status } ); } #endregion }