public static void ProtectAccount(UserToken User) { InitializeIfNull(); if (!_protectedAccounts.Contains(User)) _protectedAccounts.Add(User); }
public static void UnprotectAccount(UserToken User) { InitializeIfNull(); if (_protectedAccounts.Contains(User)) _protectedAccounts.Remove(User); }
public GroupedDM(UserToken mainUser) { user = mainUser; Messages = new SafeObservable<TwitterDirectMessage>(); lastId = -1; Messages.CollectionChanged += MessagesChanged; }
public static bool IsProtected(UserToken User) { InitializeIfNull(); if (User == null) return false; return _protectedAccounts.Contains(User); }
public static bool SwitchAccountState(UserToken User) { if (IsProtected(User)) { UnprotectAccount(User); return false; } else { ProtectAccount(User); return true; } }
private static void ReceiveFriends(TwitterCursorList<TwitterUser> friends, TwitterResponse response, UserToken user) { if (friends == null || response.StatusCode != HttpStatusCode.OK) return; if (dicUsers.ContainsKey(user)) dicUsers[user] = dicUsers[user].Union(friends.Select(x => x.ScreenName)).ToList(); else dicUsers[user] = friends.Select(x => x.ScreenName).ToList(); if (friends.NextCursor != null && friends.NextCursor != 0) ServiceDispatcher.GetService(user).ListFriends(new ListFriendsOptions { ScreenName = user.ScreenName, Cursor = (long)friends.NextCursor }, (l, r) => ReceiveFriends(l, r, user)); else { finishedUsers[user] = true; SaveUserCache(user, dicUsers[user]); } }
public static ITwitterService GetService(UserToken account) { lock (_lockFlag) { if (_services == null) _services = new Dictionary<string, ITwitterService>(); } if (account == null || account.Key == null) return null; ITwitterService srv; lock (_lockFlag) { if (_services.ContainsKey(account.Key)) return _services[account.Key]; if (TestSession) srv = new MockTwitterService(); else { var tempSrv = new TwitterService(); tempSrv.AuthenticateWith(SensitiveData.ConsumerToken, SensitiveData.ConsumerSecret, account.Key, account.Secret); srv = tempSrv; } try { _services.Add(account.Key, srv); } catch { // Again, this sometimes gives some weird exceptions. Investigate! } } return srv; }
private static void CheckIfExistsAndInsert(UserToken Token) { foreach (var item in Config.Accounts) { if (item.Key == Token.Key && item.ScreenName == Token.ScreenName) { if (item.Secret != Token.Secret) { Config.Accounts.Remove(item); Config.Accounts.Add(Token); Config.SaveAccounts(); } return; } } Config.Accounts.Add(Token); Config.SaveAccounts(); }
private void CreateColumns(UserToken user) { TwitterResource Home = new TwitterResource { Type = ResourceType.Home, User = user }; TwitterResource Mentions = new TwitterResource { Type = ResourceType.Mentions, User = user }; TwitterResource Messages = new TwitterResource { Type = ResourceType.Messages, User = user }; Deployment.Current.Dispatcher.InvokeIfRequired(() => { if (!Config.Columns.Contains(Home)) Config.Columns.Add(Home); if (!Config.Columns.Contains(Mentions)) Config.Columns.Add(Mentions); if (!Config.Columns.Contains(Messages)) Config.Columns.Add(Messages); Config.SaveColumns(); }); }
public GroupedDM(TwitterDirectMessage element, UserToken mainUser) : this(mainUser) { Messages.Add(element); }
protected override void PostProcess(string contents) { var parameters = System.Web.HttpUtility.ParseQueryString(contents); if (!parameters.AllKeys.Contains("oauth_token") || !parameters.AllKeys.Contains("oauth_token_secret")) { MessageService.ShowError(Localization.Resources.ErrorClientTokens); GoBack(); return; } UserToken Token = new UserToken { Key = parameters["oauth_token"], Secret = parameters["oauth_token_secret"], Preferences = new NotificationPreferences { MentionsPreferences = NotificationType.TileAndToast, MessagesPreferences = NotificationType.TileAndToast } }; var filler = new UserTokenFiller(Token); filler.UserDataFilled += new UserTokenFiller.OnUserDataFilled(InsertTokenIntoAccounts); filler.FillUserData(); }
public ConversationService(UserToken token) { service = ServiceDispatcher.GetService(token); }
public GroupedDM(IEnumerable<TwitterDirectMessage> list, UserToken mainUser) : this(mainUser) { Messages.BulkAdd(list); }
private NotificationType PreferencesForType(TweetType type, UserToken user) { if (type == TweetType.Mention) return user.Preferences.MentionsPreferences; else return user.Preferences.MessagesPreferences; }
public static void UnregisterPushChannel(UserToken user, string type) { HttpNotificationChannel channel; string channelName = "OcellPushChannel"; channel = HttpNotificationChannel.Find(channelName); if (channel != null) channel.Close(); SendRemoveRequestToServer(user, type); }
public static Sharplonger.TwitlongerService GetTwitlongerService(UserToken user) { return GetTwitlongerService(user.ScreenName); }
private void CheckNotificationsForUser(UserToken user) { var service = new LightTwitterClient(SensitiveData.ConsumerToken, SensitiveData.ConsumerSecret, user.Key, user.Secret); if (user.Preferences.MentionsPreferences == NotificationType.TileAndToast || user.Preferences.MentionsPreferences == NotificationType.Tile) { SignalThreadStart(); service.ListMentions(10, (statuses, response) => { GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); WriteMemUsage("Received mentions"); if (statuses == null || response.StatusCode != System.Net.HttpStatusCode.OK) { WriteMemUsage("Mentions: exit with error " + response.StatusDescription); SignalThreadEnd(); return; } var CheckDate = DateSync.GetLastCheckDate(); var ToastDate = DateSync.GetLastToastNotificationDate(); if (CheckDate > ToastDate) ToastDate = CheckDate; var newStatuses = statuses.Where(item => { return TwitterObjectIsOlderThan(item, CheckDate); }); var newToastStatuses = statuses.Where(item => { return TwitterObjectIsOlderThan(item, ToastDate); }); if (newStatuses.Count() > 0) { newMentions = true; if (newStatuses.Count() == 1) { string userstring = ""; if (newStatuses.FirstOrDefault().TryGetProperty("user", out userstring)) new TwitterObject(userstring).TryGetProperty("screen_name", out from); else from = "no_name"; } if (!usersWithNotifications.Contains(user.ScreenName)) usersWithNotifications.Add(user.ScreenName); notifications += newStatuses.Count(); if (user.Preferences.MentionsPreferences == NotificationType.TileAndToast && newToastStatuses.Count() > 1) { string toastFrom, userstring = ""; if (newToastStatuses.FirstOrDefault().TryGetProperty("user", out userstring)) new TwitterObject(userstring).TryGetProperty("screen_name", out toastFrom); else toastFrom = "no_name"; CreateToast("mention", newToastStatuses.Count(), toastFrom, user.ScreenName); DateSync.WriteLastToastNotificationDate(DateTime.Now.ToUniversalTime()); } BuildTile(); } WriteMemUsage("Mentions: Exit with " + newStatuses.Count().ToString() + " new statuses."); SignalThreadEnd(); }); } if (user.Preferences.MessagesPreferences == NotificationType.TileAndToast || user.Preferences.MessagesPreferences == NotificationType.Tile) { SignalThreadStart(); service.ListMessages(10, (statuses, response) => { GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); WriteMemUsage("Received messages"); if (statuses == null || response.StatusCode != System.Net.HttpStatusCode.OK) { WriteMemUsage("Messages: exit with error " + response.StatusDescription); SignalThreadEnd(); return; } var CheckDate = DateSync.GetLastCheckDate(); var ToastDate = DateSync.GetLastToastNotificationDate(); var newStatuses = statuses.Where(item => { return TwitterObjectIsOlderThan(item, CheckDate); }); var newToastStatuses = statuses.Where(item => { return TwitterObjectIsOlderThan(item, ToastDate); }); if (newStatuses.Count() > 0) { newMessages = true; if (newStatuses.Count() == 1) newStatuses.FirstOrDefault().TryGetProperty("sender_screen_name", out from); if (!usersWithNotifications.Contains(user.ScreenName)) usersWithNotifications.Add(user.ScreenName); notifications += newStatuses.Count(); if (user.Preferences.MessagesPreferences == NotificationType.TileAndToast && newToastStatuses.Count() > 0) { string toastFrom; newStatuses.FirstOrDefault().TryGetProperty("sender_screen_name", out toastFrom); CreateToast("message", newToastStatuses.Count(), toastFrom, user.ScreenName); DateSync.WriteLastToastNotificationDate(DateTime.Now.ToUniversalTime()); } BuildTile(); } WriteMemUsage("Messages: Exit with " + newStatuses.Count().ToString() + " new statuses."); SignalThreadEnd(); }); } }
private static IEnumerable<string> GetUserCache(UserToken user) { string filename = "AUTOCOMPLETECACHE" + user.ScreenName; return FileAbstractor.ReadLinesOfFile(filename); }
private static void SaveUserCache(UserToken user, IEnumerable<string> names) { string filename = "AUTOCOMPLETECACHE" + user.ScreenName; FileAbstractor.WriteLinesToFile(names, filename); }
static async void SendRemoveRequestToServer(UserToken token, string type) { string encoded = Library.Encrypting.EncodeTokens(token.Key, token.Secret); string url = string.Format(Library.SensitiveData.PushUnregisterUriFormat, Uri.EscapeDataString(encoded), type); var request = (HttpWebRequest)WebRequest.Create(url); try { var response = await request.GetResponseAsync(); } catch (Exception) { } }
private void InsertTokenIntoAccounts(UserToken Token) { CheckIfExistsAndInsert(Token); CreateColumns(Token); GoBack(); return; }
private void ReceiveTweetObjects(TweetType type, UserToken user, TwitterObjectCollection statuses, RestResponse response) { GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); WriteMemUsage("Received " + type.ToString()); if (statuses == null || response.StatusCode != System.Net.HttpStatusCode.OK) { WriteMemUsage(type.ToString() + ": exit with error " + response.StatusDescription); return; } var CheckDate = DateSync.GetLastCheckDate(); var ToastDate = DateSync.GetLastToastNotificationDate(); if (CheckDate > ToastDate) ToastDate = CheckDate; var newStatuses = statuses.Where(item => TwitterObjectIsOlderThan(item, CheckDate)); var newToastStatuses = statuses.Where(item => TwitterObjectIsOlderThan(item, ToastDate)); var tileStatuses = newStatuses.Select(item => TwitterObjectToNotification(type, user.ScreenName, item)); var toastStatuses = newToastStatuses.Select(item => TwitterObjectToNotification(type, user.ScreenName, item)); var notPrefs = PreferencesForType(type, user); if (notPrefs == NotificationType.Tile || notPrefs == NotificationType.TileAndToast) lock (notsSync) tileNotifications.AddRange(tileStatuses); if (notPrefs == NotificationType.Toast || notPrefs == NotificationType.TileAndToast) lock (notsSync) toastNotifications.AddRange(toastStatuses); }
public UserTokenFiller(UserToken token) { Token = token; }
public ColumnViewPivotModel(UserToken User) { user = User; Username = user.ScreenName; Resources = new SafeObservable<TwitterResource>(); this.PropertyChanged += (sender, e) => { if (e.PropertyName == "SelectedResource" && selectedResource is TwitterResource) { if (FastAddMode) AddResource((TwitterResource)selectedResource); else NavigateToResource((TwitterResource)selectedResource); } }; GenerateCoreColumns(); GetLists(); GetSearches(); }
private void CheckNotificationsForUser(UserToken user) { var service = new LightTwitterClient(SensitiveData.ConsumerToken, SensitiveData.ConsumerSecret, user.Key, user.Secret); if (user.Preferences.MentionsPreferences != NotificationType.None) { Interlocked.Increment(ref requestsPending); service.ListMentions(10, (statuses, response) => { ReceiveTweetObjects(TweetType.Mention, user, statuses, response); if (Interlocked.Decrement(ref requestsPending) == 0) notificationsWaitHandle.Set(); }); } if (user.Preferences.MessagesPreferences != NotificationType.None) { Interlocked.Increment(ref requestsPending); service.ListMessages(10, (statuses, response) => { ReceiveTweetObjects(TweetType.Message, user, statuses, response); if (Interlocked.Decrement(ref requestsPending) == 0) notificationsWaitHandle.Set(); }); } }
public static Sharplonger.TwitlongerService GetTwitlongerService(UserToken user) { return(GetTwitlongerService(user.ScreenName)); }