Example #1
0
        //public override async Task<Tuple<bool, ContactForm>> RegisterNewContactAsync(string login, IPEndPoint endPoint,
        //    IEnumerable<ContactForm> formsPublic,
        //    ResultOfOperation resultOfOperation)
        //{
        //    try
        //    {
        //        var forms = formsPublic as ContactForm[] ?? formsPublic.ToArray();
        //        Tuple<bool, ContactForm> authResult = AuthenticateContacnt(login, endPoint, forms, resultOfOperation);
        //        if (authResult.Item1)
        //        {
        //            var form = forms.First(userForm => userForm.Login.Equals(login));
        //            var args = new RegisterNewContactEventArgs {Ip = endPoint.Address, Login = login};
        //            await OnRegisterNewContact(args).ConfigureAwait(false);
        //            if (args.IsAllow)
        //                ContactsF.Add(form);
        //            resultOfOperation.OperationWasFinishedSuccessful = true;
        //        }
        //        return authResult;
        //    }
        //    catch (InvalidOperationException ex)
        //    {
        //        resultOfOperation.OperationWasFinishedSuccessful = false;
        //        resultOfOperation.ErrorMessage = "Пользователь не зарегистрирован на внешнем сервере.";
        //        return new Tuple<bool, ContactForm>(false, null);
        //    }

        //}
        public override async Task <bool> RegisterNewContactAsync(ContactForm form, IPEndPoint endPoint,
                                                                  ResultOfOperation resultOfOperation)
        {
            try
            {
                var args = new RegisterNewContactEventArgs {
                    Ip = endPoint.Address, Login = form.Login
                };
                await OnRegisterNewContact(args).ConfigureAwait(false);

                if (args.IsAllow)
                {
                    ContactsF.Add(form);
                    resultOfOperation.OperationWasFinishedSuccessful = true;
                }
                else
                {
                    resultOfOperation.OperationWasFinishedSuccessful = false;
                    resultOfOperation.ErrorMessage = "Пользователь отверг запрос на авторизацию.";
                }
                return(resultOfOperation.OperationWasFinishedSuccessful);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Example #2
0
        protected override Task OnRegisterNewContact(RegisterNewContactEventArgs args)
        {
            Func <object, RegisterNewContactEventArgs, Task> handlerEvent = RegisterNewContactEvent;

            if (handlerEvent == null)
            {
                return(Task.FromResult(false));
            }

            try
            {
                Delegate[] invocationList = handlerEvent.GetInvocationList();
                var        handlerTasks   = new Task[invocationList.Length];
                for (int i = 0; i < invocationList.Length; i++)
                {
                    handlerTasks[i] = ((Func <object, RegisterNewContactEventArgs, Task>)invocationList[i])(this, args);
                }
                return(Task.WhenAll(handlerTasks));
            }
            catch (Exception ex)
            {
                args.TryAllowContinueRegistration(false);
                return(Task.CompletedTask);
            }
        }
Example #3
0
 protected abstract Task OnRegisterNewContact(RegisterNewContactEventArgs args);