Esempio n. 1
0
        public void CheckValid()
        {
            DoLoginResponse doLoginResponse = new DoLoginResponse();

            doLoginResponse.Success       = true;
            doLoginResponse.LoginComplete = true;
            Assert.True(DoLoginResponseValidator.IsValid(doLoginResponse));
        }
Esempio n. 2
0
        public void CheckNotSuccessful()
        {
            DoLoginResponse doLoginResponse = new DoLoginResponse();

            doLoginResponse.Success       = false;
            doLoginResponse.LoginComplete = true;
            Assert.False(DoLoginResponseValidator.IsValid(doLoginResponse));
        }
Esempio n. 3
0
        /// <summary>
        /// Execute the login. This will take the configuration into consideration
        /// which can be given as parameter in the constructor.
        /// </summary>
        /// <param name="skadiLoginData">
        /// Date of the steam login. See <see cref="SkadiLoginData"/>.
        /// </param>
        /// <returns>
        /// It will return a response with login data.
        /// For more information lookup <see cref="SkadiLoginResponse"/>.
        /// </returns>
        public SkadiLoginResponse Execute(SkadiLoginData skadiLoginData)
        {
            GetSession();
            if (_skadiLoginConfiguration != null &&
                !_skadiLoginConfiguration.StopOnError)
            {
                return(ExecuteUntilLogin(skadiLoginData));
            }
            var rsaKey          = GetRsaKey(skadiLoginData.Username);
            var doLoginResponse = DoLogin(rsaKey, skadiLoginData.Username,
                                          skadiLoginData.Password, skadiLoginData.SharedSecret);

            if (!DoLoginResponseValidator.IsValid(doLoginResponse))
            {
                SkadiLoginResponse skadiLoginResponse = new SkadiLoginResponse();
                skadiLoginResponse.SkadiLoginError =
                    SkadiLoginErrorFactory.Create(doLoginResponse);
                return(skadiLoginResponse);
            }
            Transfer(doLoginResponse);
            return(SetSession());
        }
Esempio n. 4
0
        private SkadiLoginResponse ExecuteUntilLogin(SkadiLoginData skadiLoginData)
        {
            GetSession();
            GetRsaKeyResponse rsaKey          = new GetRsaKeyResponse();
            DoLoginResponse   doLoginResponse = new DoLoginResponse();
            var doLoginSuccessful             = false;

            do
            {
                try
                {
                    rsaKey          = GetRsaKey(skadiLoginData.Username);
                    doLoginResponse = DoLogin(rsaKey, skadiLoginData.Username,
                                              skadiLoginData.Password, skadiLoginData.SharedSecret);
                    if (!DoLoginResponseValidator.IsValid(doLoginResponse))
                    {
                        if (doLoginResponse.CaptchaNeeded)
                        {
                            // TODO: Get exact time for cooldown of captcha!
                            Task.Delay(TimeSpan.FromMinutes(25));
                        }
                        rsaKey          = null;
                        doLoginResponse = null;
                    }
                    else
                    {
                        doLoginSuccessful = true;
                    }
                }
                catch (Exception)
                {
                    Task.Delay(
                        TimeSpan.FromSeconds(
                            _skadiLoginConfiguration.WaitTimeEachError)).Wait();
                }
            }while (doLoginSuccessful == false);

            bool errorInTransfer = false;

            do
            {
                try
                {
                    Transfer(doLoginResponse);
                }
                catch (Exception)
                {
                    errorInTransfer = true;
                    Task.Delay(TimeSpan.FromSeconds(5)).Wait();
                }
            } while (errorInTransfer);

            SkadiLoginResponse skadiLoginResponse = null;

            do
            {
                try
                {
                    skadiLoginResponse = SetSession();
                }
                catch (Exception)
                {
                    Task.Delay(TimeSpan.FromSeconds(5)).Wait();
                }
            } while (skadiLoginResponse == null);

            return(skadiLoginResponse);
        }