Exemplo n.º 1
0
        public async Task <IUserInfo> GetUserInfo()
        {
            _logger.Method().Start();

            AccountData acData = _accountRepository.AccountData;

            Union3 <UserInfo, LoginErrorDto, Exception> loginResult;

            if (!string.IsNullOrWhiteSpace(acData?.OauthToken) && !string.IsNullOrWhiteSpace(acData.XToken))
            {
                loginResult = await _internalAuthService.GetUserInfo(acData.OauthToken, acData.XToken);
            }
            else if (!string.IsNullOrWhiteSpace(acData?.XToken))
            {
                loginResult = await _internalAuthService.LoginWithXToken(acData.XToken);
            }
            else
            {
                return((null as IUserInfo).RetWithLog(_logger).Log());
            }

            return(loginResult.Match(ui =>
            {
                ProcessUserInfo(ui);
                return ui;
            },
                                     _ => null,
                                     _ => null).RetWithLog(_logger).Log());
        }