Esempio n. 1
0
 void WriteRestUsage(JsonTextWriter writer, TwitterAccount.RestUsage usage)
 {
     writer.WriteKey("interval");
     writer.WriteNumber(usage.Interval.TotalSeconds);
     writer.WriteKey("count");
     writer.WriteNumber(usage.Count);
 }
Esempio n. 2
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 };
        }
Esempio n. 3
0
 public SearchStatuses(TwitterAccount account, string keyword) : base()
 {
     Account           = account;
     Keyword           = keyword;
     KeywordForRestAPI = keyword.Replace(",", " OR ").Replace("  ", " ");
     _rest             = account.RestSearch.CopyConfig();
 }
Esempio n. 4
0
 public SearchStatuses(TwitterAccount account, string keyword)
     : base()
 {
     Account = account;
     Keyword = keyword;
     KeywordForRestAPI = keyword.Replace (",", " OR ").Replace ("  ", " ");
     _rest = account.RestSearch.CopyConfig ();
 }
Esempio n. 5
0
 void LoadRestUsage(JsonObject obj, TwitterAccount.RestUsage usage)
 {
     if (obj.Value.ContainsKey("interval"))
     {
         usage.Interval = TimeSpan.FromSeconds((obj.Value["interval"] as JsonNumber).Value);
     }
     if (obj.Value.ContainsKey("count"))
     {
         usage.Count = (int)(obj.Value["count"] as JsonNumber).Value;
     }
 }
Esempio n. 6
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};
        }
Esempio n. 7
0
 void WriteAccount(JsonTextWriter writer, TwitterAccount account)
 {
     writer.WriteStartObject();
     if (account.Credential is NetworkCredential)
     {
         NetworkCredential nc = account.Credential as NetworkCredential;
         writer.WriteKey("username");
         writer.WriteString(nc.UserName);
         writer.WriteKey("password");
         writer.WriteString(nc.Password);
     }
     else if (account.Credential is OAuthPasswordCache)
     {
         OAuthPasswordCache pc = account.Credential as OAuthPasswordCache;
         writer.WriteKey("username");
         writer.WriteString(pc.UserName);
         writer.WriteKey("password");
         writer.WriteString(pc.Password);
         writer.WriteKey("token");
         writer.WriteString(pc.AccessToken);
         writer.WriteKey("secret");
         writer.WriteString(pc.AccessSecret);
     }
     if (account.SelfUserID > 0)
     {
         writer.WriteKey("id");
         writer.WriteNumber(account.SelfUserID);
     }
     writer.WriteKey("rest");
     writer.WriteStartObject();
     string[] rest_keys = new string[] { "home", "mentions", "dm" };
     TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] { account.RestHome, account.RestMentions, account.RestDirectMessages };
     for (int i = 0; i < rest_keys.Length; i++)
     {
         writer.WriteKey(rest_keys[i]);
         writer.WriteStartObject();
         writer.WriteKey("enable");
         writer.WriteBoolean(rests[i].IsEnabled);
         writer.WriteKey("count");
         writer.WriteNumber(rests[i].Count);
         writer.WriteKey("interval");
         writer.WriteNumber((int)rests[i].Interval.TotalSeconds);
         writer.WriteEndObject();
     }
     writer.WriteEndObject();
     writer.WriteKey("streaming");
     if (account.StreamingClient == null)
     {
         writer.WriteNull();
     }
     else
     {
         writer.WriteStartObject();
         writer.WriteKey("mode");
         if (account.StreamingClient.Target is TwitterAccount)
         {
             writer.WriteString("follow");
             writer.WriteKey("username");
             writer.WriteString((account.StreamingClient.Target as TwitterAccount).ScreenName);
         }
         else if (account.StreamingClient.Target is SearchStatuses)
         {
             writer.WriteString("track");
             writer.WriteKey("keywords");
             writer.WriteString(account.StreamingClient.SearchKeywords);
         }
         else if (account.StreamingClient.Target is ListStatuses)
         {
             writer.WriteString("list");
             writer.WriteKey("id");
             writer.WriteNumber((account.StreamingClient.Target as ListStatuses).List.ID);
         }
         writer.WriteEndObject();
     }
     writer.WriteEndObject();
 }
Esempio n. 8
0
        TwitterAccount LoadAccount(JsonObject obj)
        {
            string       uname      = (obj.Value["username"] as JsonString).Value;
            string       password   = (obj.Value["password"] as JsonString).Value;
            ICredentials credential = null;

            if (obj.Value.ContainsKey("token"))
            {
                string token  = (obj.Value["token"] as JsonString).Value;
                string secret = (obj.Value["secret"] as JsonString).Value;
                credential = new OAuthPasswordCache(uname, password, token, secret);
            }
            else
            {
                credential = new NetworkCredential(uname, password);
            }

            TwitterAccount account = new TwitterAccount(this);

            account.Credential = credential;
            if (obj.Value.ContainsKey("id"))
            {
                account.SelfUserID = (ulong)(obj.Value["id"] as JsonNumber).Value;
            }
            if (account.SelfUserID == 0)
            {
                // Backward compatibility (~0.0.5)
                ThreadPool.QueueUserWorkItem(delegate(object o) {
                    if (credential as OAuthCredentialCache == null)
                    {
                        return;
                    }
                    for (int i = 0; i < 5; i++)
                    {
                        try {
                            account.SelfUserID = account.TwitterClient.VerifyCredentials().ID;
                            break;
                        } catch {}
                        Thread.Sleep(5 * 1000);
                    }
                });
            }
            if (obj.Value.ContainsKey("rest"))
            {
                JsonObject restRoot              = (obj.Value["rest"] as JsonObject);
                string[]   rest_keys             = new string[] { "home", "mentions", "dm" };
                TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] { account.RestHome, account.RestMentions, account.RestDirectMessages };
                for (int i = 0; i < rest_keys.Length; i++)
                {
                    if (!restRoot.Value.ContainsKey(rest_keys[i]))
                    {
                        continue;
                    }
                    JsonObject restInfoRoot = (restRoot.Value[rest_keys[i]] as JsonObject);
                    rests[i].IsEnabled = (restInfoRoot.Value["enable"] as JsonBoolean).Value;
                    rests[i].Count     = (int)(restInfoRoot.Value["count"] as JsonNumber).Value;
                    rests[i].Interval  = TimeSpan.FromSeconds((restInfoRoot.Value["interval"] as JsonNumber).Value);
                }
            }
            return(account);
        }
Esempio n. 9
0
 void WriteAccount(JsonTextWriter writer, TwitterAccount account)
 {
     writer.WriteStartObject ();
     if (account.Credential is NetworkCredential) {
         NetworkCredential nc = account.Credential as NetworkCredential;
         writer.WriteKey ("username");
         writer.WriteString (nc.UserName);
         writer.WriteKey ("password");
         writer.WriteString (nc.Password);
     } else if (account.Credential is OAuthPasswordCache) {
         OAuthPasswordCache pc = account.Credential as OAuthPasswordCache;
         writer.WriteKey ("username");
         writer.WriteString (pc.UserName);
         writer.WriteKey ("password");
         writer.WriteString (pc.Password);
         writer.WriteKey ("token");
         writer.WriteString (pc.AccessToken);
         writer.WriteKey ("secret");
         writer.WriteString (pc.AccessSecret);
     }
     if (account.SelfUserID > 0) {
         writer.WriteKey ("id");
         writer.WriteNumber (account.SelfUserID);
     }
     writer.WriteKey ("rest");
     writer.WriteStartObject ();
     string[] rest_keys = new string[] {"home", "mentions", "dm"};
     TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] {account.RestHome, account.RestMentions, account.RestDirectMessages};
     for (int i = 0; i < rest_keys.Length; i ++) {
         writer.WriteKey (rest_keys[i]);
         writer.WriteStartObject ();
         writer.WriteKey ("enable");
         writer.WriteBoolean (rests[i].IsEnabled);
         writer.WriteKey ("count");
         writer.WriteNumber (rests[i].Count);
         writer.WriteKey ("interval");
         writer.WriteNumber ((int)rests[i].Interval.TotalSeconds);
         writer.WriteEndObject ();
     }
     writer.WriteEndObject ();
     writer.WriteKey ("streaming");
     if (account.StreamingClient == null) {
         writer.WriteNull ();
     } else {
         writer.WriteStartObject ();
         writer.WriteKey ("mode");
         if (account.StreamingClient.Target is TwitterAccount) {
             writer.WriteString ("follow");
             writer.WriteKey ("username");
             writer.WriteString ((account.StreamingClient.Target as TwitterAccount).ScreenName);
         } else if (account.StreamingClient.Target is SearchStatuses) {
             writer.WriteString ("track");
             writer.WriteKey ("keywords");
             writer.WriteString (account.StreamingClient.SearchKeywords);
         } else if (account.StreamingClient.Target is ListStatuses) {
             writer.WriteString ("list");
             writer.WriteKey ("id");
             writer.WriteNumber ((account.StreamingClient.Target as ListStatuses).List.ID);
         }
         writer.WriteEndObject ();
     }
     writer.WriteEndObject ();
 }
Esempio n. 10
0
        TwitterAccount LoadAccount(JsonObject obj)
        {
            string uname = (obj.Value["username"] as JsonString).Value;
            string password = (obj.Value["password"] as JsonString).Value;
            ICredentials credential = null;
            if (obj.Value.ContainsKey ("token")) {
                string token = (obj.Value["token"] as JsonString).Value;
                string secret = (obj.Value["secret"] as JsonString).Value;
                credential = new OAuthPasswordCache (uname, password, token, secret);
            } else {
                credential = new NetworkCredential (uname, password);
            }

            TwitterAccount account = new TwitterAccount (this);
            account.Credential = credential;
            if (obj.Value.ContainsKey ("id"))
                account.SelfUserID = (ulong)(obj.Value["id"] as JsonNumber).Value;
            if (account.SelfUserID == 0) {
                // Backward compatibility (~0.0.5)
                ThreadPool.QueueUserWorkItem (delegate (object o) {
                    if (credential as OAuthCredentialCache == null)
                        return;
                    for (int i = 0; i < 5; i ++) {
                        try {
                            account.SelfUserID = account.TwitterClient.VerifyCredentials ().ID;
                            break;
                        } catch {}
                        Thread.Sleep (5 * 1000);
                    }
                });
            }
            if (obj.Value.ContainsKey ("rest")) {
                JsonObject restRoot = (obj.Value["rest"] as JsonObject);
                string[] rest_keys = new string[] {"home", "mentions", "dm"};
                TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] {account.RestHome, account.RestMentions, account.RestDirectMessages};
                for (int i = 0; i < rest_keys.Length; i ++) {
                    if (!restRoot.Value.ContainsKey (rest_keys[i])) continue;
                    JsonObject restInfoRoot = (restRoot.Value[rest_keys[i]] as JsonObject);
                    rests[i].IsEnabled = (restInfoRoot.Value["enable"] as JsonBoolean).Value;
                    rests[i].Count = (int)(restInfoRoot.Value["count"] as JsonNumber).Value;
                    rests[i].Interval = TimeSpan.FromSeconds ((restInfoRoot.Value["interval"] as JsonNumber).Value);
                }
            }
            return account;
        }