public RetweetResponse Retweet(RetweetRequest request) { _twitterService.AuthenticateWith(request.AccessToken.Token, request.AccessToken.TokenSecret); _twitterService.Retweet(request.TweetId); return(new RetweetResponse()); }
internal void ReTweetExistingTweet(NGTweeterStatus tweet) { IsBusy = true; RetweetRequest retweetRequest = new RetweetRequest { AccessToken = (OAuthAccessToken)_applicationSettingsProvider["accessToken"], TweetId = tweet.Id }; _authenticationService.BeginRetweet(retweetRequest, RetweetCallback, null); }
public void FavoriteAndRetweetImmediate() { if (IsDirectMessage) { // disable on direct messages return; } if (!this.AssertQuickActionEnabled()) { return; } var accounts = this.GetImmediateAccounts() .ToObservable() .Publish(); if (!this.IsFavorited) { var freq = new FavoriteRequest(this.Status, true); accounts.Do(a => Task.Run(() => this.Model.AddFavoritedUser(a.Id))) .Do(_ => this.RaisePropertyChanged(() => this.IsFavorited)) .SelectMany(a => RequestQueue.Enqueue(a, freq) .Catch((Exception ex) => { Task.Run(() => this.Model.RemoveFavoritedUser(a.Id)); return(Observable.Empty <TwitterStatus>()); })) .Do(_ => this.RaisePropertyChanged(() => this.IsFavorited)) .Subscribe(); } if (!this.IsRetweeted) { var rreq = new RetweetRequest(this.Status, true); accounts.Do(a => Task.Run(() => this.Model.AddRetweetedUser(a.Id))) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .SelectMany(a => RequestQueue.Enqueue(a, rreq) .Catch((Exception ex) => { Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); return(Observable.Empty <TwitterStatus>()); })) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .Subscribe(); } accounts.Connect(); }
public void ReTweet_ShouldTweetSomeOtherUsersMessage_AndReturnRetweetedMessageTest() { OAuthAccessToken accessToken = new OAuthAccessToken { Token = "abcd", TokenSecret = "A@c#" }; Mock.Get(_mockTwitterService).Setup(mockService => mockService.AuthenticateWith(accessToken.Token, accessToken.TokenSecret)); RetweetRequest request = new RetweetRequest { AccessToken = accessToken, TweetId = 101 }; Mock.Get(_mockTwitterService).Setup(mockService => mockService.Retweet(request.TweetId)); _authenticationService.Retweet(request); Mock.Get(_mockTwitterService).VerifyAll(); }
public void Retweet(IEnumerable <TwitterAccount> infos, bool add) { if (IsDirectMessage) { // disable on direct messages return; } Action <TwitterAccount> expected; Action <TwitterAccount> onFail; if (add) { expected = a => Task.Run(() => this.Model.AddRetweetedUser(a.Id)); onFail = a => Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); } else { expected = a => Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); onFail = a => Task.Run(() => this.Model.AddRetweetedUser(a.Id)); } var rreq = new RetweetRequest(this.Status, add); infos.ToObservable() .Do(expected) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .SelectMany(a => RequestQueue.Enqueue(a, rreq) .Catch((Exception ex) => { onFail(a); var desc = add ? "リツイートに失敗" : "リツイート解除に失敗"; BackstageModel.RegisterEvent(new OperationFailedEvent( desc + "(" + a.UnreliableScreenName + " -> " + this.Status.User.ScreenName + ")", ex)); return(Observable.Empty <TwitterStatus>()); })) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .Subscribe(); }
public void FavoriteAndRetweetImmediate() { if (!this.AssertQuickActionEnabled()) return; var accounts = this.GetImmediateAccounts() .ToObservable() .Publish(); if (!this.IsFavorited) { var freq = new FavoriteRequest(this.Status, true); accounts.Do(a => Task.Run(() => this.Model.AddFavoritedUser(a.Id))) .Do(_ => this.RaisePropertyChanged(() => this.IsFavorited)) .SelectMany(a => RequestQueue.Enqueue(a, freq) .Catch((Exception ex) => { Task.Run(() => this.Model.RemoveFavoritedUser(a.Id)); return Observable.Empty<TwitterStatus>(); })) .Do(_ => this.RaisePropertyChanged(() => this.IsFavorited)) .Subscribe(); } if (!this.IsRetweeted) { var rreq = new RetweetRequest(this.Status, true); accounts.Do(a => Task.Run(() => this.Model.AddRetweetedUser(a.Id))) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .SelectMany(a => RequestQueue.Enqueue(a, rreq) .Catch((Exception ex) => { Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); return Observable.Empty<TwitterStatus>(); })) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .Subscribe(); } accounts.Connect(); }
public void Retweet(IEnumerable<TwitterAccount> infos, bool add) { Action<TwitterAccount> expected; Action<TwitterAccount> onFail; if (add) { expected = a => Task.Run(() => this.Model.AddRetweetedUser(a.Id)); onFail = a => Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); } else { expected = a => Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); onFail = a => Task.Run(() => this.Model.AddRetweetedUser(a.Id)); } var rreq = new RetweetRequest(this.Status, add); infos.ToObservable() .Do(expected) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .SelectMany(a => RequestQueue.Enqueue(a, rreq) .Catch((Exception ex) => { onFail(a); BackstageModel.RegisterEvent( new OperationFailedEvent((add ? "" : "un") + "retweet failed: " + a.UnreliableScreenName + " -> " + this.Status.User.ScreenName + " :" + ex.Message)); return Observable.Empty<TwitterStatus>(); })) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .Subscribe(); }
public void Retweet(IEnumerable<TwitterAccount> infos, bool add) { if (IsDirectMessage) { // disable on direct messages return; } Action<TwitterAccount> expected; Action<TwitterAccount> onFail; if (add) { expected = a => Task.Run(() => this.Model.AddRetweetedUser(a.Id)); onFail = a => Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); } else { expected = a => Task.Run(() => this.Model.RemoveRetweetedUser(a.Id)); onFail = a => Task.Run(() => this.Model.AddRetweetedUser(a.Id)); } var rreq = new RetweetRequest(this.Status, add); infos.ToObservable() .Do(expected) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .SelectMany(a => RequestQueue.Enqueue(a, rreq) .Catch((Exception ex) => { onFail(a); var desc = add ? MainAreaTimelineResources.MsgRetweetFailed : MainAreaTimelineResources.MsgUnretweetFailed; BackstageModel.RegisterEvent(new OperationFailedEvent( desc + "(" + a.UnreliableScreenName + " -> " + this.Status.User.ScreenName + ")", ex)); return Observable.Empty<TwitterStatus>(); })) .Do(_ => this.RaisePropertyChanged(() => this.IsRetweeted)) .Subscribe(); }
public void Retweet(IEnumerable<TwitterAccount> infos, bool add) { if (IsDirectMessage) { // disable on direct messages return; } Task.Run(() => { Action<TwitterAccount> expected; Action<TwitterAccount> onFail; if (add) { expected = a => Model.AddRetweetedUser(a.GetPseudoUser()); onFail = a => Model.RemoveRetweetedUser(a.Id); } else { expected = a => Model.RemoveRetweetedUser(a.Id); onFail = a => Model.AddRetweetedUser(a.GetPseudoUser()); } var request = new RetweetRequest(Status, add); // define working task Func<TwitterAccount, Task> workTask = account => Task.Run(async () => { expected(account); try { await RequestQueue.EnqueueAsync(account, request).ConfigureAwait(false); } catch (Exception ex) { onFail(account); var desc = add ? MainAreaTimelineResources.MsgRetweetFailed : MainAreaTimelineResources.MsgUnretweetFailed; BackstageModel.RegisterEvent(new OperationFailedEvent( desc + "(" + account.UnreliableScreenName + " -> " + Status.User.ScreenName + ")", ex)); } }); // dispatch actions Task.WaitAll(infos.Select(workTask).ToArray()); // notify changed RaisePropertyChanged(() => IsRetweeted); }); }