コード例 #1
0
ファイル: Filter.cs プロジェクト: kinoh/Twitch
        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
                }
            );
        }
コード例 #2
0
ファイル: UserStream.cs プロジェクト: syuilo/Twitch
        /// <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
        }