private static void Collect(XmlProductListResponse parsed, string season = "22", string gender = "1", bool isChild = false, string suggestionTerms = "12", string waterProtection = "0", string actionType = "14") { foreach (var item in parsed.Products.Products) { if (items.Keys.Any(x => x == item.Id)) { continue; } var category = item.Categories.List.FirstOrDefault(); if (category == null) { continue; } string categoryName = category.Name.Replace("'", "''"); categories.Add(categoryName); string description = item.Description.Replace("'", "''"); string name = item.Name.Replace("'", "''"); string retailerName = item.Retailer.Name.Replace("'", "''"); items.Add(item.Id, string.Format(Constants.INSERT_ITEMS, categoryName, actionType, description, name, 1, season, gender, "0", // Min Age isChild ? "18" : "100", // Max Age waterProtection, "0", "0", "0", retailerName, ITEM_PROVIDER, suggestionTerms, "1", //IsPublic item.Image.Sizes.IPhone.Url, isChild ? "1" : "0", "1", // IsAvailable item.Price.ToString().Replace(",", "."), item.ClickUrl, "0", // Currency "'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'", "NULL", //AvailableTill ITEM_PROVIDER)); } }
private static async Task DownloadAndFillItems() { int total = 0; foreach (string uriGroup in uris.Keys) { total += uris[uriGroup].Count; } int current = 1; foreach (string uriGroup in uris.Keys) { foreach (string uri in uris[uriGroup]) { Console.WriteLine(string.Format("Downloading {0} from {1}.", current, total)); string body = string.Empty; try { var httpRequest = (HttpWebRequest)WebRequest.Create(uri); WebResponse webResponse = await httpRequest.GetResponseAsync(); var response = (HttpWebResponse)webResponse; using (StreamReader sr = new StreamReader(response.GetResponseStream())) { body = sr.ReadToEnd(); } } catch (Exception ex) { Console.Write(ex.Message + " " + ex.StackTrace); } XmlProductListResponse parsed = null; try { parsed = FromXmlString(body); } catch (Exception ex) { Console.Write(ex.Message + " " + ex.StackTrace); } switch (uriGroup) { case "rain": { Collect(parsed, "22", "1", false, "136", "75", "14"); Collect(parsed, "22", "1", false, "136", "75", "13"); } break; case "wind": { Collect(parsed, "28", "1", false, "56", "0", "14"); Collect(parsed, "28", "1", false, "56", "0", "13"); } break; case "autumn": { Collect(parsed, "20", "1", false, (2 + 4 + 8 + 128).ToString(), "50", "14"); Collect(parsed, "20", "1", false, (2 + 4 + 8 + 128).ToString(), "50", "13"); } break; case "warm": { Collect(parsed, "12", "1", false, (2 + 4 + 8).ToString(), "0", "14"); Collect(parsed, "12", "1", false, (2 + 4 + 8).ToString(), "0", "13"); } break; case "winter": { Collect(parsed, "8", "1", false, (2 + 4 + 8).ToString(), "50", "14"); Collect(parsed, "8", "1", false, (2 + 4 + 8).ToString(), "50", "13"); } break; case "sport": { Collect(parsed, "30", "1", false, (2 + 4 + 8 + 256 + 1024 + 2048).ToString(), "0", "3"); Collect(parsed, "30", "1", false, (2 + 4 + 8 + 256 + 1024 + 2048).ToString(), "0", "4"); } break; case "office": { Collect(parsed, "30", "1", false, (2 + 4 + 8 + 256 + 1024 + 2048).ToString(), "0", "9"); Collect(parsed, "30", "1", false, (2 + 4 + 8 + 256 + 1024 + 2048).ToString(), "0", "10"); } break; case "walk": { Collect(parsed, "28", "1", false, (2 + 4 + 8 + 256 + 1024 + 2048).ToString(), "25", "14"); Collect(parsed, "28", "1", false, (2 + 4 + 8 + 256 + 1024 + 2048).ToString(), "25", "13"); } break; case "kids": { Collect(parsed, "28", "1", true, (2 + 4 + 8).ToString(), "0", "11"); Collect(parsed, "28", "1", true, (2 + 4 + 8).ToString(), "0", "12"); } break; case "travel": { Collect(parsed, "28", "1", false, (2 + 4 + 8).ToString(), "0", "15"); Collect(parsed, "28", "0", false, (2 + 4 + 8).ToString(), "0", "16"); } break; default: break; } ++current; } } }