Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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;
        }