protected override FootsitesProduct GetArbitraryItem(CancellationToken token) { FootsitesProduct product = ScrapeReleasePage(token)[0]; GetProductSizes(product, token); return(product); }
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); }
/// <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); }
/// <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(); * ");*/ }
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); }
protected override void AddArbitraryItem(FootsitesProduct product, CancellationToken token) { AddToCart(new AccountCheckoutSettings() { ProductToBuy = product, BuyOptions = new ProductBuyOptions() { Quantity = 1, Size = product.Sizes[0] } }, token); }
/// <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); }
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); }
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); }
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; }
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); }
protected override void RemoveArbitraryItem(FootsitesProduct product, CancellationToken token) { throw new NotImplementedException(); }
private void RemoveArbitraryItem(WebView cartTab, FootsitesProduct arbitraryProduct, CancellationToken token) { throw new NotImplementedException(); }
protected abstract void RemoveArbitraryItem(FootsitesProduct product, CancellationToken token);