Ejemplo n.º 1
0
        public TwitterAccount(TwitterAccountManager mgr)
        {
            _mgr         = mgr;
            _oauthClient = new OAuthClient(ConsumerKeyStore.Key, ConsumerKeyStore.Secret, TwitterClient.RequestTokenURL,
                                           TwitterClient.AccessTokenURL, TwitterClient.AuthorizeURL, TwitterClient.XAuthURL);
            _client     = new TwitterClient(_oauthClient);
            _dispatcher = Dispatcher.CurrentDispatcher;

            // defaults
            SelfUserID = 0;
            RestHome   = new RestUsage {
                Interval = TimeSpan.FromSeconds(30), Count = 200
            };
            RestMentions = new RestUsage {
                Interval = TimeSpan.FromSeconds(600), Count = 20
            };
            RestDirectMessages = new RestUsage {
                Interval = TimeSpan.FromSeconds(600), Count = 20
            };
            RestList = new TwitterAccount.RestUsage {
                Interval = TimeSpan.FromSeconds(30), Count = 200
            };
            RestSearch = new TwitterAccount.RestUsage {
                Interval = TimeSpan.FromSeconds(30), Count = 100
            };
            _restInfoList  = new RestUsage[] { RestHome, RestMentions, RestDirectMessages };
            _restSinceList = new ulong?[] { null, null, null };
        }
Ejemplo n.º 2
0
 void UpdateTimeLine(RestUsage r, RestUpdateDelegate func, TimeLineType type, int sinceListIndex)
 {
     r.LastExecTime = DateTime.Now;
     r.IsRunning    = true;
     ThreadPool.QueueUserWorkItem(delegate(object o) {
         try {
             Status[] statuses = func(_restSinceList[sinceListIndex], null, r.Count, null);
             _restSinceList[sinceListIndex] = TwitterClient.GetMaxStatusID(_restSinceList[sinceListIndex], statuses);
             _dispatcher.BeginInvoke(new EmptyDelegate(delegate() {
                 for (int i = 0; i < statuses.Length; i++)
                 {
                     statuses[i].AccountInfo = this;
                     if (type == TimeLineType.Home && IsMention(statuses[i]))
                     {
                         Mentions.Add(statuses[i]);
                         if (!_mgr.HomeIncludeMentions)
                         {
                             continue;
                         }
                     }
                     else if (type == TimeLineType.Mentions && _mgr.HomeIncludeMentions)
                     {
                         HomeTimeline.Add(statuses[i]);
                     }
                     r.TimeLine.Add(statuses[i]);
                 }
             }));
         } catch {
         } finally {
             r.IsRunning    = false;
             r.LastExecTime = DateTime.Now;
             r.UpdateNextExecTimeRemaining();
         }
     });
 }
Ejemplo n.º 3
0
        public void UpdateTimeLines()
        {
            RestUpdateDelegate[] funcs = new RestUpdateDelegate[] { _client.GetHomeTimeline, _client.GetMentions, _client.GetDirectMessagesAll };
            for (int i = 0; i < funcs.Length; i++)
            {
                RestUsage r = _restInfoList[i];

                if (!r.IsRunning && r.IsEnabled)
                {
                    if (r.NextExecTime < DateTime.Now)
                    {
                        UpdateTimeLine(r, funcs[i], (TimeLineType)i, i);
                    }
                    r.UpdateNextExecTimeRemaining();
                }
            }
        }
Ejemplo n.º 4
0
        public TwitterAccount(TwitterAccountManager mgr)
        {
            _mgr = mgr;
            _oauthClient = new OAuthClient (ConsumerKeyStore.Key, ConsumerKeyStore.Secret, TwitterClient.RequestTokenURL,
                TwitterClient.AccessTokenURL, TwitterClient.AuthorizeURL, TwitterClient.XAuthURL);
            _client = new TwitterClient (_oauthClient);
            _dispatcher = Dispatcher.CurrentDispatcher;

            // defaults
            SelfUserID = 0;
            RestHome = new RestUsage {Interval = TimeSpan.FromSeconds (30), Count = 200};
            RestMentions = new RestUsage {Interval = TimeSpan.FromSeconds (600), Count = 20};
            RestDirectMessages = new RestUsage {Interval = TimeSpan.FromSeconds (600), Count = 20};
            RestList = new TwitterAccount.RestUsage {Interval = TimeSpan.FromSeconds (30), Count = 200};
            RestSearch = new TwitterAccount.RestUsage {Interval = TimeSpan.FromSeconds (30), Count = 100};
            _restInfoList = new RestUsage[] {RestHome, RestMentions, RestDirectMessages};
            _restSinceList = new ulong?[] {null, null, null};
        }
Ejemplo n.º 5
0
 void UpdateTimeLine(RestUsage r, RestUpdateDelegate func, TimeLineType type, int sinceListIndex)
 {
     r.LastExecTime = DateTime.Now;
     r.IsRunning = true;
     ThreadPool.QueueUserWorkItem (delegate (object o) {
         try {
             Status[] statuses = func (_restSinceList[sinceListIndex], null, r.Count, null);
             _restSinceList[sinceListIndex] = TwitterClient.GetMaxStatusID (_restSinceList[sinceListIndex], statuses);
             _dispatcher.BeginInvoke (new EmptyDelegate (delegate () {
                 for (int i = 0; i < statuses.Length; i++) {
                     statuses[i].AccountInfo = this;
                     if (type == TimeLineType.Home && IsMention (statuses[i])) {
                         Mentions.Add (statuses[i]);
                         if (!_mgr.HomeIncludeMentions)
                             continue;
                     } else if (type == TimeLineType.Mentions && _mgr.HomeIncludeMentions) {
                         HomeTimeline.Add (statuses[i]);
                     }
                     r.TimeLine.Add (statuses[i]);
                 }
             }));
         } catch {
         } finally {
             r.IsRunning = false;
             r.LastExecTime = DateTime.Now;
             r.UpdateNextExecTimeRemaining ();
         }
     });
 }