// Methods protected Task <AuthenticateResult> ExecuteAsync(Func <Task <AuthenticateResult> > executeDelegate) { #region Contracts if (executeDelegate == null) { throw new ArgumentException(); } #endregion // Require if (_signInDelegate == null) { throw new InvalidOperationException("SignInDelegate not find."); } // Command var command = new AuthenticateCommand(executeDelegate); // SignIn var result = _signInDelegate(command); if (result == null) { throw new InvalidOperationException(); } // Return return(result); }
// Methods internal Task <AuthenticateResult> SignInAsync(AuthenticateCommand command) { #region Contracts if (command == null) { throw new ArgumentException(); } #endregion // Execute return(command.ExecuteAsync().ContinueWith <AuthenticateResult>((executeTask) => { // Result var executeResult = executeTask.Result; if (executeResult == null) { throw new InvalidOperationException(); } if (executeResult.Succeeded == false) { return executeResult; } // Ticket var currentTicket = executeResult.Ticket; if (currentTicket == null) { throw new InvalidOperationException(); } if (currentTicket.ExpireTime < DateTime.Now) { throw new InvalidOperationException(); } // Save _ticketRepository.SetTicket(currentTicket); // Return return executeResult; })); }