public TwoFactorRequiredUserError(TwoFactorAuthorizationException exception) : base(exception.Message, innerException: exception) { Guard.ArgumentNotNull(exception, nameof(exception)); TwoFactorType = exception.TwoFactorType; RetryFailed = exception is TwoFactorChallengeFailedException; }
public IObservable <TwoFactorChallengeResult> HandleTwoFactorException(TwoFactorAuthorizationException exception) { var userError = new TwoFactorRequiredUserError(exception); return(twoFactorDialog.Show(userError) .ObserveOn(RxApp.MainThreadScheduler) .SelectMany(x => x == RecoveryOptionResult.RetryOperation ? Observable.Return(userError.ChallengeResult) : Observable.Throw <TwoFactorChallengeResult>(exception))); }
public async Task <TwoFactorChallengeResult> HandleTwoFactorException(TwoFactorAuthorizationException exception) { await ThreadingHelper.SwitchToMainThreadAsync(); var userError = new TwoFactorRequiredUserError(exception); var result = await twoFactorDialog.Show(userError); if (result != null) { return(result); } else { throw exception; } }
async Task <ApplicationAuthorization> HandleTwoFactorAuthorization( HostAddress hostAddress, IGitHubClient client, NewAuthorization newAuth, TwoFactorAuthorizationException exception) { for (;;) { var challengeResult = await twoFactorChallengeHandler.Value.HandleTwoFactorException(exception); if (challengeResult == null) { throw new InvalidOperationException( "ITwoFactorChallengeHandler.HandleTwoFactorException returned null."); } if (!challengeResult.ResendCodeRequested) { try { var auth = await CreateAndDeleteExistingApplicationAuthorization( client, newAuth, challengeResult.AuthenticationCode).ConfigureAwait(false); return(EnsureNonNullAuthorization(auth)); } catch (TwoFactorAuthorizationException e) { exception = e; } catch (Exception e) { await twoFactorChallengeHandler.Value.ChallengeFailed(e); await keychain.Delete(hostAddress).ConfigureAwait(false); throw; } } else { return(null); } } }
public async Task <TwoFactorChallengeResult> HandleTwoFactorException(TwoFactorAuthorizationException exception) { Guard.ArgumentNotNull(exception, nameof(exception)); await JoinableTaskContext.Factory.SwitchToMainThreadAsync(); var userError = new TwoFactorRequiredUserError(exception); var result = await twoFactorDialog.Show(userError); if (result != null) { return(result); } else { throw exception; } }
public TwoFactorRequiredUserError(TwoFactorAuthorizationException exception) : this(exception, exception.TwoFactorType) { }
public TwoFactorRequiredUserError(TwoFactorAuthorizationException exception) : base(exception.Message, innerException: exception) { TwoFactorType = exception.TwoFactorType; RetryFailed = exception is TwoFactorChallengeFailedException; }