Ejemplo n.º 1
0
        public Task <bool> ProcessConfirmationsAsync(IEnumerable <ConfirmationItem> confirmations, ConfirmationAction action, CancellationToken cancellationToken)
        {
            return(Task.Run(async() => {
                _confirmationSemaphore.Wait();
                _isConirmationInProcess = true;
                bool success = true;
                try
                {
                    App.Logger.Info($"Authenticator.ProcessConfirmationsAsync Action: {action}");
                    State = AuthenticatorState.ConfirmationProcessing;
                    if (confirmations == null || confirmations.Count() == 0)
                    {
                        App.Logger.Trace($"Authenticator.ProcessConfirmationsAsync [Empty]");
                        return success;
                    }

                    App.Logger.Info($"Authenticator.ProcessConfirmationsAsync Confirmations for process: {confirmations.Count()}");
                    int counter = 0;
                    foreach (ConfirmationItem confirmation in confirmations)
                    {
                        try
                        {
                            cancellationToken.ThrowIfCancellationRequested();
                            await ProcessConfirmationAsync(confirmation, action);
                            counter++;
                        }
                        catch (OperationCanceledException)
                        {
                            App.Logger.Info($"Authenticator.ProcessConfirmationsAsync Canceled");
                            break;
                        }
                    }

                    ConfirmationActionResult confirmationActionResult = action == ConfirmationAction.Accept ? ConfirmationActionResult.Accept : ConfirmationActionResult.Decline;
                    ConfirmationsEvent.Invoke(this, new AuthenticatorConfirmationsEventArgs(confirmationActionResult, counter));

                    return success;
                }
                finally
                {
                    State = AuthenticatorState.ConfirmationProcessed;
                    _isConirmationInProcess = false;
                    _confirmationSemaphore.Release();
                }
            }));
        }
Ejemplo n.º 2
0
 public AuthenticatorConfirmationEventArgs(ConfirmationActionResult action, ConfirmationItem item)
 {
     Action = action;
     Item   = item;
 }
Ejemplo n.º 3
0
 public AuthenticatorConfirmationsEventArgs(ConfirmationActionResult action, int count)
 {
     Action = action;
     Count  = count;
 }