Ejemplo n.º 1
0
        /// <summary>
        /// Give a list of UPCs, get the products from Ix-One that they have on file.
        /// </summary>
        /// <param name="items">The list of UPC12s that we have in our data</param>
        /// <returns></returns>
        public static IxOneReturn GetIXOneList(List <string> items)
        {
            IxOneReturn ret = new IxOneReturn();

            ret.GetIXOneListRecurse(items);
            return(ret);
        }
Ejemplo n.º 2
0
        private void GetIXOneListRecurse(List <string> items)
        {
            IxOneReturn received = null;

            if (items.Count > 1000)
            {
                // recursively nest calls in blocks of 1000
                received = GetIXOneList(items.Skip(1000).ToList());
                items    = items.Take(1000).ToList();
            }

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(Constants.IXONE_PRODUCTINFO_GET_URL);

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";
            httpWebRequest.Headers[HttpRequestHeader.Authorization] = "Bearer " +
                                                                      Configuration.CatalogServiceUnfiImagesIxOneAuthToken;

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                StringBuilder sbUPC = new StringBuilder();
                foreach (string upc in items.Take(items.Count - 1))
                {
                    sbUPC.Append("'" + upc + "',");
                }
                {
                    string upc = items[items.Count - 1];
                    sbUPC.Append("'" + upc + "'");
                }

                // build dynamic request for images and then serialize as json
                dynamic request = new ExpandoObject();
                request.PageNumber  = 1;
                request.PageSize    = 1000;
                request.DataFilters = new List <ExpandoObject>();
                request.DataFilters.Add(new ExpandoObject());
                request.DataFilters[0].EntityName   = "Product";
                request.DataFilters[0].PropertyName = "UPC12";
                request.DataFilters[0].Operator     = "IN";
                request.DataFilters[0].Comparator   = sbUPC.ToString();
                request.PropertyListing             = new List <ExpandoObject>();
                request.PropertyListing.Add(new ExpandoObject());
                request.PropertyListing[0].EntityName   = "Product";
                request.PropertyListing[0].PropertyName = "UPC12";
                request.PropertyListing.Add(new ExpandoObject());
                request.PropertyListing[1].EntityName   = "Product";
                request.PropertyListing[1].PropertyName = "StandardizedImage";
                request.PropertyListing.Add(new ExpandoObject());
                request.PropertyListing[2].EntityName   = "StandardizedImage";
                request.PropertyListing[2].PropertyName = "OriginalFileName";

                string json = Newtonsoft.Json.JsonConvert.SerializeObject(request);

                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

            string result;
            var    httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                result = streamReader.ReadToEnd();
            }

            Define(result);
            if (received != null)
            {
                // add in products received in nested calls
                Products.AddRange(received.Products);
            }
        }