public async Task <bool> LoginAsync(string userName, string password) => (await OAuthClient.GetAccessToken(userName, password)) .OnFailure(result => { GetAccessTokenFailed?.Invoke(result.Error); _authParameters = AuthParameters.Empty; }) .OnSuccess(result => GetAccessTokenSucceed?.Invoke(result.Value.AccessToken.Value)) .OnSuccess(result => _authParameters = AuthParameters.Create( accessToken: result.Value.AccessToken.Value, accessTokenExpiration: result.Value.AccessToken.ExpireInSeconds, refreshToken: result.Value.RefreshToken.Value)) .OnSuccess(() => { _refreshCancellationTokenSource = new CancellationTokenSource(); BeginTokenRefreshLoop(_refreshCancellationTokenSource.Token); }).IsSuccess;
private async Task <Result <AuthParameters> > RefreshAccessToken(string refreshToken) => (await OAuthClient.RefreshAccessToken(refreshToken)) .Map(result => AuthParameters.Create( accessToken: result.AccessToken.Value, accessTokenExpiration: result.AccessToken.ExpireInSeconds, refreshToken: result.RefreshToken.Value));