//------------------------------------------------------------------------------- // 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(); }
//------------------------------------------------------------------------------- // 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); } }
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(); })); }