public ProductModel(int number, string initialSku, bool keepDownloads = true) { Number = number; jsModel = new JsModel(); this.initialSku = initialSku; Status = ModelStatus.New; Styles = new List<ProductStyle>(); this.keepDownloads = keepDownloads; }
public void Process() { // download a the main page string url = String.Format("http://www.champssports.com/product/model:{0}/sku:{1}/", Number, initialSku); Console.WriteLine("Downloading a model: " + url); string mainPage = Web.DownloadString(url, 5); if (String.IsNullOrEmpty(mainPage)) { Status = ModelStatus.Failed; return; } Console.WriteLine("Parsing data..."); string rawModel = RX.ExtractModelInfo(mainPage); string rawStyles = RX.ExtractStylesInfo(mainPage); jsModel = JsonConvert.DeserializeObject<JsModel>(rawModel); Dictionary<string, JArray> jStyles = JsonConvert.DeserializeObject<Dictionary<string, JArray>>(rawStyles); foreach (string sku in jsModel.ALLSKUS) { JArray rawStyle = jStyles[sku]; ProductStyle stl = new ProductStyle(sku, rawStyle); Styles.Add(stl); } Parallel.ForEach(Styles, _ => { _.Process(); }); Status = ModelStatus.Processed; }