AssemblePostPayload() public method

Assembles all form elements and values to POST. Also html encodes the values.
public AssemblePostPayload ( ) : string
return string
        public void Login(string username, string password, bool forceLogin = false)
        {
            string culture = Properties.Resources.Culture.ToString();
            long   day     = DateTime.Now.Ticks / TimeSpan.TicksPerDay;

            if (day > _lastLogin || culture != _lastCulture)
            {
                forceLogin = true;
            }

            if (!_isLoggedIn || forceLogin)
            {
                Log.Info("Login to Amazon " + Properties.Resources.AmazonRootUrl);
                _isLoggedIn  = false;
                _lastCulture = culture;
                var    loginDoc     = Load(Properties.Resources.AmazonLoginUrl);
                var    formElements = new FormElementCollection(loginDoc);
                string postUrl      = loginDoc.GetElementbyId("ap_signin_form").Attributes["action"].Value;
                formElements["email"]    = username;
                formElements["password"] = password;
                formElements["create"]   = "0";
                Thread.Sleep(1500);
                string login = GetWebData(postUrl, formElements.AssemblePostPayload(), cc, null, null, false, false, userAgent);
                // TODO add login check
                _isLoggedIn = true;
                _lastLogin  = day;
                Log.Info("Login complete");
            }
        }
        public void Login(string username, string password, bool forceLogin = false)
        {
            string culture = Properties.Resources.Culture.ToString();
            long day = DateTime.Now.Ticks / TimeSpan.TicksPerDay;
            
            if (day > _lastLogin || culture != _lastCulture)
            {
                forceLogin = true;
            }

            if (!_isLoggedIn || forceLogin)
            {
                Log.Info("Login to Amazon " + Properties.Resources.AmazonRootUrl);
                _isLoggedIn = false;
                _lastCulture = culture;
                var loginDoc = Load(Properties.Resources.AmazonLoginUrl);
                var formElements = new FormElementCollection(loginDoc);
                string postUrl = loginDoc.GetElementbyId("ap_signin_form").Attributes["action"].Value;
                formElements["email"] = username;
                formElements["password"] = password;
                formElements["create"] = "0";
                Thread.Sleep(1500);
                string login = GetWebData(postUrl, formElements.AssemblePostPayload(), cc, null, null, false, false, userAgent);
                // TODO add login check
                _isLoggedIn = true;
                _lastLogin = day;
                Log.Info("Login complete");
            }
        }
        public void Login(string username, string password, bool forceLogin = false)
        {
            string culture = Resources.Culture.ToString();
            long day = DateTime.Now.Ticks / TimeSpan.TicksPerDay;

            if (day > _lastLogin || culture != _lastCulture)
            {
                forceLogin = true;
            }

            if (!_isLoggedIn || forceLogin)
            {
                Log.Info("Login to Amazon " + Resources.AmazonRootUrl);
                _isLoggedIn = false;
                _lastCulture = culture;

                // Load the main page inside a WebBrowser control to retrieve all dynamically created cookies (session ids by JS)
                _cc = GetCookies(Resources.AmazonLoginUrl);

                var loginDoc = Load(Resources.AmazonLoginUrl);
                var formElements = new FormElementCollection(loginDoc);
                // There can appear different login pages, using other names for form / controls
                var loginForm = loginDoc.GetElementbyId("ap_signin_form") ?? loginDoc.DocumentNode.SelectNodes("//*[@name='signIn']").FirstOrDefault();
                if (loginForm == null)
                {
                    Log.Error("AmazonBrowserSession: Failed to get login form!");
                    return;
                }
                // Copy over all input elements
                foreach (var inputElement in loginForm.SelectNodes("//input"))
                {
                    var name = inputElement.Attributes["name"];
                    var value = inputElement.Attributes["value"];
                    if (name != null && value != null)
                        formElements[name.Value] = value.Value;
                }
                if (formElements.ContainsKey("email"))
                {
                    formElements["email"] = username;
                    formElements["password"] = password;
                    formElements["create"] = "0";
                }
                else
                {
                    // 2nd variant of login form
                    formElements["ap_email"] = username;
                    formElements["ap_password"] = password;
                }

                NameValueCollection headers = new NameValueCollection();
                headers["Accept"] = "text/html, application/xhtml+xml, image/jxr, */*";
                headers["Accept-Language"] = "de-DE";
                headers["Cache-Control"] = "no-cache";
                headers["User-Agent"] = UserAgent;

                string postUrl = loginForm.Attributes["action"].Value;
                //Thread.Sleep(500);
                string login = GetWebData(postUrl, formElements.AssemblePostPayload(), _cc, Resources.AmazonLoginUrl, null, false, false, UserAgent, null, headers);

                var reCustomer = new Regex("\"customerID\":\"([^\"]*)\"");
                var customerMatch = reCustomer.Match(login);
                if (customerMatch.Groups.Count > 1)
                {
                    _customerId = customerMatch.Groups[1].Value;
                    _isLoggedIn = true;
                    _lastLogin = day;
                }
                Log.Info("Login complete");
            }
        }
Beispiel #4
0
        public void Login(string username, string password, bool forceLogin = false)
        {
            string culture = Resources.Culture.ToString();
            long   day     = DateTime.Now.Ticks / TimeSpan.TicksPerDay;

            if (day > _lastLogin || culture != _lastCulture)
            {
                forceLogin = true;
            }

            if (!_isLoggedIn || forceLogin)
            {
                Log.Info("Login to Amazon " + Resources.AmazonRootUrl);
                _isLoggedIn  = false;
                _lastCulture = culture;

                // Load the main page inside a WebBrowser control to retrieve all dynamically created cookies (session ids by JS)
                _cc = GetCookies(Resources.AmazonLoginUrl);

                var loginDoc     = Load(Resources.AmazonLoginUrl);
                var formElements = new FormElementCollection(loginDoc);
                // There can appear different login pages, using other names for form / controls
                var loginForm = loginDoc.GetElementbyId("ap_signin_form") ?? loginDoc.DocumentNode.SelectNodes("//*[@name='signIn']").FirstOrDefault();
                if (loginForm == null)
                {
                    Log.Error("AmazonBrowserSession: Failed to get login form!");
                    return;
                }
                // Copy over all input elements
                foreach (var inputElement in loginForm.SelectNodes("//input"))
                {
                    var name  = inputElement.Attributes["name"];
                    var value = inputElement.Attributes["value"];
                    if (name != null && value != null)
                    {
                        formElements[name.Value] = value.Value;
                    }
                }
                if (formElements.ContainsKey("email"))
                {
                    formElements["email"]    = username;
                    formElements["password"] = password;
                    formElements["create"]   = "0";
                }
                else
                {
                    // 2nd variant of login form
                    formElements["ap_email"]    = username;
                    formElements["ap_password"] = password;
                }

                NameValueCollection headers = new NameValueCollection();
                headers["Accept"]          = "text/html, application/xhtml+xml, image/jxr, */*";
                headers["Accept-Language"] = "de-DE";
                headers["Cache-Control"]   = "no-cache";
                headers["User-Agent"]      = UserAgent;

                string postUrl = loginForm.Attributes["action"].Value;
                //Thread.Sleep(500);
                string login = GetWebData(postUrl, formElements.AssemblePostPayload(), _cc, Resources.AmazonLoginUrl, null, false, false, UserAgent, null, headers);

                var reCustomer    = new Regex("\"customerID\":\"([^\"]*)\"");
                var customerMatch = reCustomer.Match(login);
                if (customerMatch.Groups.Count > 1)
                {
                    _customerId = customerMatch.Groups[1].Value;
                    _isLoggedIn = true;
                    _lastLogin  = day;
                }
                Log.Info("Login complete");
            }
        }