private string BuildSenseless(TwitterStatus ts) { if (ts.RetweetedOriginal != null) { return "… RT @" + ts.RetweetedOriginal.User.ScreenName + ": " + ts.RetweetedOriginal.Text; } else { return "… RT @" + ts.User.ScreenName + ": " + ts.Text; } }
/// <summary> /// ステータスの追加に際しての処理 /// </summary> private static TweetViewModel RegisterStatus(TwitterStatus status) { if (status.RetweetedOriginal != null) { // リツイートのオリジナルステータスを登録 var vm = Register(status.RetweetedOriginal); // リツイートユーザーに登録 var user = UserStorage.Get(status.User); var tuser = UserStorage.Get(status.RetweetedOriginal.User); if (vm.RegisterRetweeted(user)) { if (!vm.IsStatusInfoContains) vm.SetStatus(status.RetweetedOriginal); // 自分が関係していれば if (AccountStorage.Contains(status.RetweetedOriginal.User.ScreenName) || AccountStorage.Contains(user.TwitterUser.ScreenName)) EventStorage.OnRetweeted(vm, user); } } UserStorage.Register(status.User); var registered = RegisterCore(status); // 返信先の登録 if (status.InReplyToStatusId != 0) { Get(status.InReplyToStatusId, true).RegisterInReplyToThis(status.Id); } if (TwitterHelper.IsMentionOfMe(status)) { EventStorage.OnMention(registered); } return registered; }
public static TwitterStatus FromNode(XElement node) { if (node == null) { throw new ArgumentNullException("node"); } return(new TwitterStatus() { Id = node.Element("id").ParseLong(), Text = node.Element("text").ParseString(), Source = node.Element("source").ParseString(), CreatedAt = node.Element("created_at").ParseDateTime("ddd MMM d HH':'mm':'ss zzz yyyy"), InReplyToStatusId = node.Element("in_reply_to_status_id").ParseLong(), InReplyToUserId = node.Element("in_reply_to_user_id").ParseLong(), InReplyToUserScreenName = node.Element("in_reply_to_screen_name").ParseString(), RetweetedOriginal = node.Element("retweeted_status") == null ? null : TwitterStatus.FromNode(node.Element("retweeted_status")), User = TwitterUser.FromNode(node.Element("user")), Entities = TwitterEntity.Parse(node.Element("entities")), }); }
private bool IsMemberOfTimeline(TwitterStatus status, AccountInfo info) { // 自分のツイートかどうか if (status.User.NumericId == info.NumericId) return true; // 自分への返信かどうか if (RegularExpressions.AtRegex.Matches(status.Text) .OfType<Match>() .Any(s => s.Value.Equals(info.ScreenName, StringComparison.CurrentCultureIgnoreCase))) return true; // 自分のフォローしている相手か return info.IsFollowing(status.User.NumericId) && // 先頭が@でないか、またはフォローしている相手 (!status.Text.StartsWith("@") || info.IsFollowing(status.InReplyToUserId)); }