示例#1
0
 //-------------------------------------------------------------------------------
 //
 private string MakeUserStreamItemLogText(UserStreamItemType type, object data)
 {
     StringBuilder sb = new StringBuilder("・");
     switch (type) {
         case UserStreamItemType.unknown:
             sb.Append(string.Format("UnknownData(file:{0})", (string)data));
             break;
         case UserStreamItemType.friendlist:
             sb.Append(string.Format("FriendList (Num:{0})", ((IEnumerable<long>)data).Count()));
             break;
         case UserStreamItemType.status:
             TwitData t = (TwitData)data;
             if (TwitData.IsRT(t)) {
                 sb.Append(string.Format("{0} Retweet Status of {2} by {1}", t.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                            , t.UserScreenName, t.RTTwitData.UserScreenName));
             }
             else {
                 sb.Append(string.Format("{0} Status by {1}", t.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                            , t.UserScreenName));
             }
             break;
         case UserStreamItemType.directmessage:
             TwitData dm = (TwitData)data;
             sb.Append(string.Format("{0} {1} send DirectMessage to {2}", dm.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                        , dm.UserScreenName, dm.DMScreenName));
             break;
         case UserStreamItemType.tracklimit:
             int value = (int)data;
             sb.Append(string.Format("Track Limit Notation (value:{0})", value));
             break;
         case UserStreamItemType.status_delete:
             sb.Append(string.Format("Delete Status id:{0}", (long)data));
             break;
         case UserStreamItemType.directmessage_delete:
             sb.Append(string.Format("Delete DirectMessage id:{0}", (long)data));
             break;
         case UserStreamItemType.disconnect:
             var disc = data as Tuple<int, string>;
             sb.Append(string.Format("Disconnect code:{0}, reason:{1}", disc.Item1, disc.Item2));
             break;
         case UserStreamItemType.warning:
             var warn = data as Tuple<string, string, int>;
             sb.Append(string.Format("Warning: code:{0}, message:{1}, percent_full:{2}", warn.Item1, warn.Item2, warn.Item3));
             break;
         case UserStreamItemType.eventdata:
             UserStreamEventData d = (UserStreamEventData)data;
             switch (d.Type) {
                 case UserStreamEventType.favorite:
                     sb.Append(string.Format("{0} {1} fav {2} 's tweet",
                                                 d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                 d.SourceUser.ScreenName, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.unfavorite:
                     sb.Append(string.Format("{0} {1} unfav {2} 's tweet",
                                                 d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                 d.SourceUser.ScreenName, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.follow:
                     sb.Append(string.Format("{0} {1} follow {2}",
                                                 d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                 d.SourceUser.ScreenName, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.block:
                     sb.Append(string.Format("{0} {1} block {2}",
                                                 d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                 d.SourceUser.ScreenName, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.unblock:
                     sb.Append(string.Format("{0} {1} unblock {2}",
                                                 d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                 d.SourceUser.ScreenName, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.list_created:
                     sb.Append(string.Format("{0} List {1} is created", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                      , d.TargetList.Name));
                     break;
                 case UserStreamEventType.list_updated:
                     sb.Append(string.Format("{0} List {1} is updated", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                      , d.TargetList.Name));
                     break;
                 case UserStreamEventType.list_destroyed:
                     sb.Append(string.Format("{0} List {1} is destroyed", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                      , d.TargetList.Name));
                     break;
                 case UserStreamEventType.list_member_added:
                     sb.Append(string.Format("{0} {1} is added in List {2} by {3}", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                           , d.TargetUser.ScreenName, d.TargetList.Name, d.SourceUser.ScreenName));
                     break;
                 case UserStreamEventType.list_member_removed:
                     sb.Append(string.Format("{0} {1} is removed from List {2} by {3}", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                           , d.TargetUser.ScreenName, d.TargetList.Name, d.SourceUser.ScreenName));
                     break;
                 case UserStreamEventType.list_user_subscribed:
                     sb.Append(string.Format("{0} {1} subscribe List {2} of {3}", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                         , d.SourceUser.ScreenName, d.TargetList.Name, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.list_user_unsubscribed:
                     sb.Append(string.Format("{0} {1} unsubscribe List {2} of {3}", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                         , d.SourceUser.ScreenName, d.TargetList.Name, d.TargetUser.ScreenName));
                     break;
                 case UserStreamEventType.user_update:
                     sb.Append(string.Format("{0} Profile Update", d.Time.ToString(Utilization.STR_DATETIMEFORMAT)));
                     break;
                 default: // Unknown
                     sb.Append(string.Format("{0} unknown UserStreamEventType {1}",
                               d.Time.ToString(Utilization.STR_DATETIMEFORMAT), (int)d.Type));
                     break;
             }
             break;
         default: // Unknown
             sb.Append(string.Format("unknown UserStreamItemType {0}", data.ToString()));
             break;
     }
     return sb.ToString();
 }
示例#2
0
        //-------------------------------------------------------------------------------
        //
        private void UserStreamMainProcess(UserStreamItemType type, object data)
        {
            try {
                switch (type) {
                    case UserStreamItemType.friendlist:
                        _friendIDSet = new HashSet<long>((IEnumerable<long>)data);
                        break;
                    case UserStreamItemType.status: {
                            TwitData twitdata = (TwitData)data;
                            while (_friendIDSet == null) { Thread.Sleep(10); } // 待機
                            // Home
                            if (SettingsData.Filters == null || StatusFilter.ThroughFilters(twitdata, SettingsData.Filters, CheckIncludeFriendIDs)) {
                                this.Invoke((Action)(() => uctlDispHome.AddData(twitdata.AsEnumerable(), true, true)));
                                // RTの時のPopup
                                if (TwitData.IsRT(twitdata) && SettingsData.UserStream_ShowPopup_Retweet && twitdata.RTTwitData.UserID == Twitter.ID) {
                                    string title = tasktray.Text + ":リツイート";
                                    string text = string.Format("{0} にリツイートされました\n{1}\n{2}", twitdata.UserScreenName,
                                                                twitdata.RTTwitData.Time.ToString(Utilization.STR_DATETIMEFORMAT), twitdata.RTTwitData.Text);
                                    this.PopupTasktray(title, text);
                                }
                            }
                            // Reply
                            if (!TwitData.IsRT(twitdata)
                             && (twitdata.MainTwitData.Mention_UserID == Twitter.ID
                              || twitdata.MainTwitData.TextIncludeUserMention(Twitter.ScreenName))) {
                                this.Invoke((Action)(() => uctlDispReply.AddData(twitdata.AsEnumerable(), true, true)));
                                if (SettingsData.DisplayReplyBaloon) {
                                    PopupTasktray(tasktray.Text + ":Reply 新着有り", Utilization.MakePopupText(twitdata));
                                }
                            }
                            // History
                            if (twitdata.UserID == Twitter.ID) {
                                this.Invoke((Action)(() => uctlDispHistory.AddData(twitdata.AsEnumerable(), true)));
                            }
                        }
                        break;
                    case UserStreamItemType.directmessage: {
                            TwitData twitdata = (TwitData)data;
                            this.Invoke((Action)(() => uctlDispDirect.AddData(twitdata.AsEnumerable(), true)));
                            if (SettingsData.DisplayDMBaloon) {
                                PopupTasktray(tasktray.Text + ":DirectMessage 新着有り", Utilization.MakePopupText(twitdata));
                            }
                        }
                        break;
                    case UserStreamItemType.status_delete: {
                            long id = (long)data;
                            this.Invoke((Action)(() =>
                            {
                                uctlDispHome.RemoveTweet(id);
                                uctlDispReply.RemoveTweet(id);
                                uctlDispHistory.RemoveTweet(id);
                            }));
                        }
                        break;
                    case UserStreamItemType.directmessage_delete: {
                            long id = (long)data;
                            this.Invoke((Action)(() => uctlDispDirect.RemoveTweet(id)));
                        }
                        break;
                    case UserStreamItemType.eventdata: {
                            #region EventData表示処理
                            //-----------------------------------------------------------
                            UserStreamEventData d = (UserStreamEventData)data;
                            string title = null;
                            string text = null;
                            switch (d.Type) {
                                case UserStreamEventType.favorite:
                                    if (SettingsData.UserStream_ShowPopup_Favorite) {
                                        title = tasktray.Text + ":お気に入り追加";
                                        text = string.Format("{0} が {1} の発言をお気に入りに追加\n{2}\n{3}", d.SourceUser.ScreenName, d.TargetUser.ScreenName,
                                                             d.TargetTwit.Time.ToString(Utilization.STR_DATETIMEFORMAT), d.TargetTwit.Text);
                                    }
                                    break;
                                case UserStreamEventType.unfavorite:
                                    if (SettingsData.UserStream_ShowPopup_Unfavorite) {
                                        title = tasktray.Text + ":お気に入り削除";
                                        text = string.Format("{0} が {1} の発言をお気に入りから削除\n{2}\n{3}", d.SourceUser.ScreenName, d.TargetUser.ScreenName,
                                                             d.TargetTwit.Time.ToString(Utilization.STR_DATETIMEFORMAT), d.TargetTwit.Text);
                                    }
                                    break;
                                case UserStreamEventType.follow:
                                    if (SettingsData.UserStream_ShowPopup_Follow) {
                                        title = tasktray.Text + ":フォロー";
                                        text = string.Format("{0} が {1} をフォロー", d.SourceUser.ScreenName, d.TargetUser.ScreenName);
                                    }
                                    break;
                                case UserStreamEventType.block:
                                    if (SettingsData.UserStream_ShowPopup_Block) {
                                        title = tasktray.Text + ":ブロック";
                                        text = string.Format("{0} が {1} をブロック", d.SourceUser.ScreenName, d.TargetUser.ScreenName);
                                    }
                                    break;
                                case UserStreamEventType.unblock:
                                    if (SettingsData.UserStream_ShowPopup_Unblock) {
                                        title = tasktray.Text + ":ブロック解除";
                                        text = string.Format("{0} が {1} をブロック解除", d.SourceUser.ScreenName, d.TargetUser.ScreenName);
                                    }
                                    break;
                                case UserStreamEventType.list_member_added:
                                    if (SettingsData.UserStream_ShowPopup_ListMemberAdd) {
                                        title = tasktray.Text + ":リストメンバー追加";
                                        text = string.Format("{0} がリスト {1} に {2} を追加", d.SourceUser.ScreenName, d.TargetList.Name, d.TargetUser.ScreenName);
                                    }
                                    break;
                                case UserStreamEventType.list_member_removed:
                                    if (SettingsData.UserStream_ShowPopup_ListMemberRemoved) {
                                        title = tasktray.Text + ":リストメンバー削除";
                                        text = string.Format("{0} がリスト {1} から {2} を削除", d.SourceUser.ScreenName, d.TargetList.Name, d.TargetUser.ScreenName);
                                    }
                                    break;
                                case UserStreamEventType.list_created:
                                    if (SettingsData.UserStream_ShowPopup_ListCreated) {
                                        title = tasktray.Text + ":リスト追加";
                                        text = string.Format("リスト {0} を追加", d.TargetList.Name);
                                    }
                                    break;
                                case UserStreamEventType.list_updated:
                                    if (SettingsData.UserStream_ShowPopup_ListUpdated) {
                                        title = tasktray.Text + ":リスト更新";
                                        text = string.Format("リスト {0} を更新", d.TargetList.Name);
                                    }
                                    break;
                                case UserStreamEventType.list_destroyed:
                                    if (SettingsData.UserStream_ShowPopup_ListDestroyed) {
                                        title = tasktray.Text + ":リスト削除";
                                        text = string.Format("リスト {0} を削除", d.TargetList.Name);
                                    }
                                    break;
                                case UserStreamEventType.list_user_subscribed:
                                    if (SettingsData.UserStream_ShowPopup_ListSubscribed) {
                                        title = tasktray.Text + ":リストフォロー";
                                        text = string.Format("{0} が {1} のリスト {2} をフォロー", d.SourceUser.ScreenName, d.TargetUser.ScreenName, d.TargetList.Name);
                                    }
                                    break;
                                case UserStreamEventType.list_user_unsubscribed:
                                    if (SettingsData.UserStream_ShowPopup_ListUnsubscribed) {
                                        title = tasktray.Text + ":リストフォロー解除";
                                        text = string.Format("{0} が {1} のリスト {2} をフォロー解除", d.SourceUser.ScreenName, d.TargetUser.ScreenName, d.TargetList.Name);
                                    }
                                    break;
                                case UserStreamEventType.user_update:
                                    if (SettingsData.UserStream_ShowPopup_UserUpdate) {
                                        title = tasktray.Text + ":プロフィール更新";
                                        text = string.Format("プロフィールが更新されました");
                                    }
                                    break;
                            }
                            if (title != null) { this.PopupTasktray(title, text); }
                            //-----------------------------------------------------------
                            #endregion
                        }
                        break;
                    case UserStreamItemType.disconnect:
                        var code_and_reason = (Tuple<int, string>)data;

                        break;
                    case UserStreamItemType.tracklimit:
                    case UserStreamItemType.location_dalelete:
                    case UserStreamItemType.status_withheld:
                    case UserStreamItemType.user_withheld:
                        break;
                }

                // ログ
                _frmUserStreamWatch.AddItem(MakeUserStreamItemLogText(type, data));
            }
            catch (InvalidOperationException) { }
            catch (Exception ex) {
                Log.DebugLog(ex);
            }
        }
示例#3
0
        private void ActionU(UserStreamItemType type, object data)
        {
            StringBuilder sb = new StringBuilder("・");
            switch (type) {
                case UserStreamItemType.unknown:
                    sb.Append(string.Format("UnknownData(file:{0})", (string)data));
                    break;
                case UserStreamItemType.friendlist:
                    sb.Append(string.Format("FriendList (Num:{0})", ((IEnumerable<long>)data).Count()));
                    break;
                case UserStreamItemType.status:
                    TwitData t = (TwitData)data;
                    sb.Append(string.Format("{0} Status by {1}", t.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                               , t.UserScreenName));
                    break;
                case UserStreamItemType.directmessage:
                    TwitData dm = (TwitData)data;
                    sb.Append(string.Format("{0} {1} send DirectMessage to {2}", dm.Time.ToString(Utilization.STR_DATETIMEFORMAT)
                                                                               , dm.UserScreenName, dm.DMScreenName));
                    break;
                case UserStreamItemType.tracklimit:
                    int value = (int)data;
                    sb.Append(string.Format("Track Limit Notation (value:{0})", value));
                    break;
                case UserStreamItemType.status_delete:
                    sb.Append(string.Format("Delete Status id:{0}", (long)data));
                    break;
                case UserStreamItemType.directmessage_delete:
                    sb.Append(string.Format("Delete DirectMessage id:{0}", (long)data));
                    break;
                case UserStreamItemType.eventdata:
                    UserStreamEventData d = (UserStreamEventData)data;
                    switch (d.Type) {
                        case UserStreamEventType.favorite:
                            sb.Append(string.Format(string.Format("{0} {1} fav {2} 's tweet",
                                                        d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                        d.SourceUser.ScreenName, d.TargetUser.ScreenName)));
                            break;
                        case UserStreamEventType.unfavorite:
                            sb.Append(string.Format(string.Format("{0} {1} unfav {2} 's tweet",
                                                        d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                        d.SourceUser.ScreenName, d.TargetUser.ScreenName)));
                            break;
                        case UserStreamEventType.follow:
                            sb.Append(string.Format(string.Format("{0} {1} follow {2}",
                                                        d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                        d.SourceUser.ScreenName, d.TargetUser.ScreenName)));
                            break;
                        case UserStreamEventType.block:
                            sb.Append(string.Format(string.Format("{0} {1} block {2}",
                                                        d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                        d.SourceUser.ScreenName, d.TargetUser.ScreenName)));
                            break;
                        case UserStreamEventType.unblock:
                            sb.Append(string.Format(string.Format("{0} {1} unblock {2}",
                                                        d.Time.ToString(Utilization.STR_DATETIMEFORMAT),
                                                        d.SourceUser.ScreenName, d.TargetUser.ScreenName)));
                            break;

                    }
                    break;
            }

            this.Invoke((Action)(() =>
            {
                richTextBox1.AppendText(sb.ToString());
                richTextBox1.AppendText("\n");
                richTextBox1.Focus();
            }));
        }