private void RegisterEvent(TwitterStreamingElement elem) { switch (elem.EventType) { case EventType.Blocked: EventHub.NotifyBlocked(elem.EventSourceUser, elem.EventTargetUser); break; case EventType.Unblocked: EventHub.NotifyUnblocked(elem.EventSourceUser, elem.EventTargetUser); break; case EventType.Favorite: EventHub.NotifyFavorited(elem.EventSourceUser, elem.EventTargetTweet); break; case EventType.Unfavorite: EventHub.NotifyUnfavorited(elem.EventSourceUser, elem.EventTargetTweet); break; case EventType.Follow: EventHub.NotifyFollowed(elem.EventSourceUser, elem.EventTargetUser); break; case EventType.Unfollow: EventHub.NotifyUnfollwed(elem.EventSourceUser, elem.EventTargetUser); break; case EventType.LimitationInfo: EventHub.NotifyLimitationInfoGot(AuthInfo, elem.TrackLimit.GetValueOrDefault()); break; default: return; } }
private void Register(TwitterStreamingElement elem) { _hardErrorRetryCount = 0; // initialize error count switch (elem.EventType) { case EventType.Empty: // deliver tweet or something. if (elem.Status != null) { Observable.Return(elem.Status).RegisterToStore(); } if (elem.DeletedId != null) { StatusStore.Remove(elem.DeletedId.Value); } break; case EventType.Follow: case EventType.Unfollow: long source = elem.EventSourceUser.Id; long target = elem.EventTargetUser.Id; bool isFollowed = elem.EventType == EventType.Follow; if (source == AuthInfo.Id) // follow or remove { AuthInfo.GetAccountData().SetFollowing(target, isFollowed); } else if (target == AuthInfo.Id) // followed or removed { AuthInfo.GetAccountData().SetFollower(source, isFollowed); } else { return; } if (isFollowed) RegisterEvent(elem); break; case EventType.Blocked: if (elem.EventSourceUser.Id != AuthInfo.Id) return; AuthInfo.GetAccountData().AddBlocking(elem.EventTargetUser.Id); break; case EventType.Unblocked: if (elem.EventSourceUser.Id != AuthInfo.Id) return; AuthInfo.GetAccountData().RemoveBlocking(elem.EventTargetUser.Id); break; default: RegisterEvent(elem); break; } }