Exemple #1
0
        public async Task <UserInfoUnion> Login(string userName, string password, CaptchaAnswer captchaAnswer = null)
        {
            _logger.Method().Start($"{userName} | {captchaAnswer}");

            Union3 <UserInfo, LoginErrorDto, Exception> userInfoUnion = await _internalAuthService.Login(userName, password, captchaAnswer);

            return(userInfoUnion.Match(userInfo =>
            {
                ProcessUserInfo(userInfo);
                return new UserInfoUnion.Case1(userInfo.RetWithLog(_logger).Log());
            },
                                       error =>
                                       string.IsNullOrWhiteSpace(error.CaptchaKey) || string.IsNullOrWhiteSpace(error.CaptchaUrl)
                        ? (UserInfoUnion) new UserInfoUnion.Case2(new LoginError(error.Error, error.ErrorDescription).RetWithLog(_logger).Log())
                        : new UserInfoUnion.Case4(new CaptchaQuery(error.CaptchaKey, error.CaptchaUrl).RetWithLog(_logger).Log()),
                                       ex => new UserInfoUnion.Case3(ex.RetWithLog(_logger).Log())));
        }