Ejemplo n.º 1
0
        protected override FootsitesProduct GetArbitraryItem(CancellationToken token)
        {
            FootsitesProduct product = ScrapeReleasePage(token)[0];

            GetProductSizes(product, token);
            return(product);
        }
Ejemplo n.º 2
0
        public void testCheckPost()
        {
            CheckReleaseDates checker = new CheckReleaseDates();
            FootsitesProduct  product = new FootsitesProduct(null, "sd", "https://www.eastbay.com/product/model:303959/sku:00500617/", 0, "", "", "", null);

            checker.checkPost(product, CancellationToken.None);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// This method gets random item from releases page
        /// </summary>
        protected override FootsitesProduct GetArbitraryItem(CancellationToken token)
        {
            FootsitesProduct product = ScrapeReleasePage(token).Where(prod => (!prod.LaunchCountdownEnabled && prod.ReleaseTime < DateTime.UtcNow)).ToList()[0];

            GetProductSizes(product, token);
            return(product);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// This method removes item from cart
        /// </summary>
        /// <param name="product"> product to remove </param>
        /// <param name="token"></param>
        protected override void RemoveArbitraryItem(FootsitesProduct product, CancellationToken token)
        {
            Browser.ActiveTab.LoadUrlAndWait(CartUrl);
            Task.Delay(4000, token).Wait(token);
            Console.WriteLine(GetScriptByXpath("//*[@id='page_cart']/ul/li[@data-sku='" + product.Sku + "']/a/span") + ".click()");
            Browser.ActiveTab.EvalScript(GetScriptByXpath("//*[@id='page_cart']/ul/li[@data-sku='" + product.Sku + "']/a/span") + ".click()");
            Console.Write(Browser.ActiveTab.LastJSException);

            /*driver.EvalScript($@"
             *      var xhr = new XMLHttpRequest();
             *      var date = Date.now();
             *      var requestKey = window.frames.accountGateway._requestKey;
             *      var itemId = {lineItemIdScript}
             *      xhr.open('GET', 'https://www.eastbay.com/pdp/gateway?requestKey=' + requestKey + '&action=delete&lineItemId='+ itemId + '&_=' + date);
             *      xhr.onload = function() {{
             *          if (xhr.status === 200) {{
             *              console.log(xhr.responseText);
             *          }}
             *          else {{
             *              alert('Request failed.  Returned status of ' + xhr.status);
             *          }}
             *      }};
             *      xhr.send();
             * ");*/
        }
Ejemplo n.º 5
0
        public void checkPost(FootsitesProduct product, CancellationToken token)
        {
            Console.Write(product.Url);
            var request  = ClientFactory.CreateProxiedHttpClient(autoCookies: true).AddHeaders(ClientFactory.FireFoxHeaders);
            var document = request.GetDoc(product.Url, token);

            Console.WriteLine((string)document.DocumentNode.InnerHtml);
        }
Ejemplo n.º 6
0
 protected override void AddArbitraryItem(FootsitesProduct product, CancellationToken token)
 {
     AddToCart(new AccountCheckoutSettings()
     {
         ProductToBuy = product,
         BuyOptions   = new ProductBuyOptions()
         {
             Quantity = 1,
             Size     = product.Sizes[0]
         }
     }, token);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// This method adds Arbitrary item to cart
 /// </summary>
 /// <param name="product"> Item to add </param>
 /// <param name="token"></param>
 private void AddArbitraryItemToCart(FootsitesProduct product, CancellationToken token)
 {
     AddToCart(Browser.ActiveTab, new AccountCheckoutSettings()
     {
         ProductToBuy = product,
         BuyOptions   = new ProductBuyOptions()
         {
             Quantity = 1,
             Size     = product.Sizes[0]
         }
     }, token);
     Browser.ActiveTab.LoadUrlAndWait(CartUrl);
     Browser.ActiveTab.EvalScript("document.getElementById(\"cta_button\").click();");
     Task.Delay(4000, token).Wait(token);
 }
Ejemplo n.º 8
0
        private List <FootsitesProduct> GetProducts(JToken data)
        {
            var products = new List <FootsitesProduct>();

            foreach (var day in data)
            {
                var productsOnDay = day["products"];
                foreach (var productData in productsOnDay)
                {
                    try
                    {
                        if (productData["availableInventory"].Value <int>() == 0)
                        {
                            continue;
                        }

                        var date  = GetDate(productData);
                        var name  = GetPropertyAsString(productData, "name");
                        var price = GetPrice(productData);
                        var url   = GetUrl(productData);
                        var image = GetPropertyAsString(productData, "primaryImageURL");
                        var sku   = GetPropertyAsString(productData, "sku");
                        var model = GetPropertyAsString(productData, "model");
                        var color = GetPropertyAsString(productData, "color");
                        var showLaunchCountdown = GetCountDownEnabled(productData);
                        var gender = GetGender(productData);


                        var product = new FootsitesProduct(this, name, url, price, image, url, "USD", date)
                        {
                            Sku    = sku,
                            Model  = model,
                            Color  = color,
                            Gender = gender,
                            LaunchCountdownEnabled = (showLaunchCountdown != 0)
                        };

                        products.Add(product);
                    }
                    catch (Exception e)
                    {
                        Debug.WriteLine(e.Message);
                    }
                }
            }

            return(products);
        }
Ejemplo n.º 9
0
        public virtual void AccountCheckout(AccountCheckoutSettings settings, CancellationToken token)
        {
            Logger.Instance.WriteVerboseLog($"Checkout process ({settings.ProductToBuy.Name}) started", Color.DarkOrange);
            Browser.NewTab("MainTab");

            Logger.Instance.WriteVerboseLog($"Signing in (username={settings.UserLogin}...");
            if (!Login(settings.UserLogin, settings.UserPassword, token))
            {
                Logger.Instance.WriteErrorLog("Wrong password");
            }
            Logger.Instance.WriteVerboseLog($"Login successful!", Color.DarkOliveGreen);

            Logger.Instance.WriteVerboseLog($"Clearing cart...", Color.Black);
            RemoveAllItems(token);
            Logger.Instance.WriteVerboseLog($"Cart cleared!", Color.DarkOliveGreen);
            Logger.Instance.WriteVerboseLog($"Preparing for checkout...", Color.Black);
            FootsitesProduct arbitraryProduct = GetArbitraryItem(token);

            Browser.ActiveTab.LoadUrlAndWait(arbitraryProduct.Url);
            Task.Delay(4000, token).Wait(token);
            AddArbitraryItem(arbitraryProduct, token);
            Task.Delay(2000, token).Wait(token);
            GoToCheckoutPage(token);
            Browser.NewTab("Cart");
            RemoveArbitraryItem(arbitraryProduct, token);
            Browser.ActiveTab.LoadUrlAndWait(settings.ProductToBuy.Url);
            Task.Delay(4000, token).Wait(token);
            Logger.Instance.WriteVerboseLog("Preparation Done!", Color.DarkOliveGreen);
            var secondsLeft = (settings.ProductToBuy.ReleaseTime - DateTime.UtcNow)?.Seconds;

            Logger.Instance.WriteVerboseLog($"Waiting product to be released (about {secondsLeft} seconds left...");

            WaitBeforeRelease(settings.ProductToBuy.Model, token);
            Logger.Instance.WriteVerboseLog($"Product release detected!", Color.DarkOliveGreen);
            Logger.Instance.WriteVerboseLog("Adding product to cart..", Color.Black);
            AddToCart(settings, token);
            Logger.Instance.WriteVerboseLog("Product successfully added to cart!", Color.DarkOliveGreen);
            Logger.Instance.WriteVerboseLog("Checkout product...", Color.Black);
            Browser.SwitchToTab(0).Reload().WaitOne();
            FinalCheckout(settings, token);
            Logger.Instance.WriteVerboseLog("CHECKOUT SUCCESS!!!", Color.DarkGreen);
            Logger.Instance.WriteVerboseLog("Signing out from account...");
            LogOut(token);
            Logger.Instance.WriteVerboseLog("Sign out success!", Color.Green);
        }
Ejemplo n.º 10
0
        public void GetProductSizes(FootsitesProduct product, CancellationToken token)
        {
            List <string> infos           = new List <string>();
            var           client          = ClientFactory.CreateHttpClient(autoCookies: true).AddHeaders(ClientFactory.FireFoxHeaders);
            var           document        = client.GetDoc(product.Url, token).DocumentNode;
            int           ind             = document.InnerHtml.IndexOf("var styles = ", StringComparison.Ordinal);
            var           sizeData        = Utils.GetFirstJson(document.InnerHtml.Substring(ind));
            var           sizesForCurProd = (JArray)sizeData[product.Sku][7];

            foreach (var item in sizesForCurProd)
            {
                var t = (JArray)item;
                var s = (string)t[0];
                infos.Add(s.Trim());
            }

            product.Sizes = infos;
        }
Ejemplo n.º 11
0
        public override void AccountCheckout(AccountCheckoutSettings settings, CancellationToken token)
        {
            Browser.NewTab("MainTab");

            if (!Login("*****@*****.**", "giorgi121", token))
            {
                Logger.Instance.WriteErrorLog("Wrong password");
                return;
            }

            FootsitesProduct arbitraryProduct = GetArbitraryItem(token);
            var cartTab = Browser.NewTab("Cart");

            AddArbitraryItemToCart(arbitraryProduct, token);
            Task.Delay(3 * 1000, token).Wait(token);
            AddToCart(Browser.ActiveTab, settings, token);
            Task.Delay(3 * 1000).Wait(token);

            RemoveArbitraryItem(arbitraryProduct, token);
            Task.Delay(DelayInSecond * 1000, token).Wait(token);
            Browser.SwitchToTab(0).Reload().WaitOne();
            Task.Delay(10 * 1000, token).Wait(token);
        }
Ejemplo n.º 12
0
 protected override void RemoveArbitraryItem(FootsitesProduct product, CancellationToken token)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 13
0
 private void RemoveArbitraryItem(WebView cartTab, FootsitesProduct arbitraryProduct, CancellationToken token)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 14
0
 protected abstract void RemoveArbitraryItem(FootsitesProduct product, CancellationToken token);