Beispiel #1
0
 /// <summary>
 /// User ViewModelを取得します。<para />
 /// 内部キャッシュを更新します。
 /// </summary>
 /// <param name="user">ユーザー情報(nullは指定できません)</param>
 public static UserViewModel Get(TwitterUser user)
 {
     if (user == null)
         throw new ArgumentNullException("user");
     var newvm = new UserViewModel(user);
     dictionary.AddOrUpdate(user.ScreenName, newvm);
     return newvm;
 }
Beispiel #2
0
 /// <summary>
 /// User ViewModelを取得します。<para />
 /// 内部キャッシュを更新します。
 /// </summary>
 /// <param name="user">ユーザー情報(nullは指定できません)</param>
 public static UserViewModel Get(TwitterUser user)
 {
     if (user == null)
         throw new ArgumentNullException("user");
     var newvm = new UserViewModel(user);
     using (lockWrap.GetWriterLock())
     {
         if (dictionary.ContainsKey(user.ScreenName))
             dictionary[user.ScreenName] = newvm;
         else
             dictionary.Add(user.ScreenName, newvm);
     }
     return newvm;
 }
Beispiel #3
0
 public static TwitterDirectMessage FromNode(XElement node)
 {
     if (node == null)
     {
         throw new ArgumentNullException("node");
     }
     return(new TwitterDirectMessage()
     {
         Id = node.Element("id").ParseLong(),
         Text = node.Element("text").ParseString(),
         CreatedAt = node.Element("created_at").ParseDateTime("ddd MMM d HH':'mm':'ss zzz yyyy"),
         Sender = TwitterUser.FromNode(node.Element("sender")),
         Recipient = TwitterUser.FromNode(node.Element("recipient")),
         Entities = TwitterEntity.Parse(node.Element("entities")),
     });
 }
Beispiel #4
0
 public static TwitterList FromNode(XElement node)
 {
     if (node == null)
     {
         throw new ArgumentNullException("node");
     }
     return(new TwitterList()
     {
         Id = node.Element("id").ParseLong(),
         Name = node.Element("name").ParseString(),
         FullName = node.Element("full_name").ParseString(),
         Slug = node.Element("slug").ParseString(),
         Description = node.Element("description").ParseString(),
         SubscriberCount = node.Element("subscriber_count").ParseLong(),
         PartialUri = node.Element("uri").ParseString(),
         Mode = node.Element("mode").ParseString(),
         User = TwitterUser.FromNode(node.Element("user")),
     });
 }
Beispiel #5
0
 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")),
     });
 }
Beispiel #6
0
 public override bool FilterUser(Dulcet.Twitter.TwitterUser user)
 {
     return AccountStorage.Accounts.Where(i => MatchingUtil.MatchAccount(i.ScreenName, needle))
         .Any(i => i.IsFollowing(user.NumericId));
 }
Beispiel #7
0
 public static bool IsMuted(TwitterUser user)
 {
     return Setting.Instance.TimelineFilteringProperty.MuteBlockedUsers &&
         AccountStorage.Accounts.Any(a => a.IsBlocking(user.NumericId) &&
         !AccountStorage.Contains(user.ScreenName));
 }
Beispiel #8
0
 public bool Equals(TwitterUser user)
 {
     return user != null && user.NumericId == this.NumericId;
 }
Beispiel #9
0
 public bool FilterUser(TwitterUser user)
 {
     if (_filters != null)
     {
         foreach (var f in _filters.OfType<IUserFilter>())
         {
             // ANDのとき => FALSEに出会ったらFALSEを返す
             // ORのとき => TRUEに出会ったらTRUEを返す 
             if (f.FilterUser(user) != ConcatenateAnd)
                 return ConcatenateAnd == Negate;
         }
     }
     // ANDのとき => FALSEに出会っていないのでTRUEを返す
     // ORのとき => TRUEに出会っていないのでFALSEを返す
     return ConcatenateAnd == !Negate;
 }
Beispiel #10
0
 public override bool FilterUser(TwitterUser user)
 {
     return user.IsVerified;
 }
Beispiel #11
0
 private void ReportForSpam(AccountInfo info, TwitterUser user)
 {
     try
     {
         info.ReportSpam(user.NumericId);
     }
     catch (Exception ex)
     {
         ExceptionStorage.Register(ex, ExceptionCategory.TwitterError,
             "@" + user.ScreenName + " のR4Sに失敗しました。", () => ReportForSpam(info, user));
     }
 }
Beispiel #12
0
 public override bool FilterUser(TwitterUser user)
 {
     return AccountStorage.Accounts.Where(i => Match(i.ScreenName, needle))
         .Any(i => i.IsFollowing(user.NumericId));
 }
Beispiel #13
0
 /// <summary>
 /// User ViewModelを生成して、キャッシュに追加します。
 /// </summary>
 public static void Register(TwitterUser user)
 {
     Get(user);
 }
Beispiel #14
0
 /// <summary>
 /// User ViewModelを生成して、キャッシュに追加します。
 /// </summary>
 public static void Register(TwitterUser user)
 {
     Task.Factory.StartNew(() => Get(user));
 }
Beispiel #15
0
 private static bool IsBlacklisted(TwitterUser user)
 {
     lock (listLock)
     {
         if (eventRaiseCountDictionary.ContainsKey(user.NumericId))
             eventRaiseCountDictionary[user.NumericId]++;
         else
             eventRaiseCountDictionary.Add(user.NumericId, 1);
         if (blacklistedUserIds.Contains(user.NumericId))
             return true;
         if (eventRaiseCountDictionary[user.NumericId] >= BLACKLIST_THRESHOLD)
         {
             blacklistedUserIds.Add(user.NumericId);
             Register(new EventDescription(EventKind.Suppressed, new UserViewModel(user), null), true);
             return true;
         }
         else
         {
             // OK
             return false;
         }
     }
 }
Beispiel #16
0
 public UserViewModel(TwitterUser user)
 {
     if (user == null)
         throw new NullReferenceException("user");
     this.TwitterUser = user;
 }
Beispiel #17
0
 public bool Equals(TwitterUser user)
 {
     return(user != null && user.NumericId == this.NumericId);
 }
Beispiel #18
0
 public abstract bool FilterUser(TwitterUser user);