/// <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); }
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); } }