static void Process() { int pageSize = Convert.ToInt32(ConfigurationManager.AppSettings.Get("CMEAPI_PageSize")); string cmeLink = cmeAPI.CreateLink(1); // Get Products link int totalPages = 0; Console.WriteLine("Preparing connection...."); var jsonProd = new WebClient().DownloadString(cmeLink + "?page=0&size=" + pageSize.ToString()); CMEProduct.ProductsMain prodobj = JsonConvert.DeserializeObject <CMEProduct.ProductsMain>(jsonProd); //CMEInstrument.InstrumentMain instobj = JsonConvert.DeserializeObject<CMEInstrument.InstrumentMain>(jsonInst); totalPages = prodobj._metadata.totalPages; ProcessProduct(cmeLink, totalPages, pageSize); }
static void ProcessProduct(string cmeLink, int totalPages, int pageSize) { AppDAL appDal = new AppDAL(); Console.WriteLine("Processing Data..."); for (int i = 0; i < totalPages; i++) { string linkParam = "?page=" + i.ToString() + "&size=" + pageSize.ToString(); Console.WriteLine("Collecting Product information from source." + i.ToString() + " of " + totalPages.ToString()); var jsonProdTmp = new WebClient().DownloadString(cmeLink + linkParam); Console.WriteLine("Processing collected data to temp table..."); CMEProduct.ProductsMain prodobjTmp = JsonConvert.DeserializeObject <CMEProduct.ProductsMain>(jsonProdTmp); appDal.SetProductDataToSave(prodobjTmp); } }
public void SetProductDataToSave(CMEProduct.ProductsMain prodobjTmp) { DataTable dt = typeProductTable(); foreach (var item in prodobjTmp._embedded.products) { string prodGuid = item.productGuid.ToString(); dt.Rows.Add( item.productGuid, item.productGuidInt, item.productName, item.securityType, item.clearingSymbol, item.masterSymbol, item.exchangeClearing, item.exchangeGlobex, item.assetClass, item.assetSubClass, item.sector, item.subSector, item.dailyFlag, item.settlePxCcy, item.minGlobexOrdQty, item.maxGlobexOrdQty, item.tradePxCcy, item.globexGroupCode, item.itcCode, item.pxQuoteMethod, //codeMethod in Table item.lastUpdated ); CME_API cmeAPI = new CME_API(); string cmeLink = cmeAPI.CreateLink(1); // Get instrument link string prodInstrLnk = cmeLink + prodGuid + "/instruments"; int pageSizeInstr = Convert.ToInt32(ConfigurationManager.AppSettings.Get("CMEAPI_PageSize")); string paramInstrLnk = "?page=0&size=" + pageSizeInstr.ToString(); var jsonProdInst = new WebClient().DownloadString(prodInstrLnk + paramInstrLnk); CMEInstrument.InstrumentMain instrobjTmp = JsonConvert.DeserializeObject <CMEInstrument.InstrumentMain>(jsonProdInst); DataTable dtInst = typeInstrumentTable(); Console.Write("Collecting product instrument for " + prodGuid); for (int iCnt = 0; iCnt < instrobjTmp._metadata.totalPages; iCnt++) { Console.WriteLine("Collecting Instrument information from source." + instrobjTmp._metadata.totalElements.ToString() + " - " + iCnt.ToString() + " of " + instrobjTmp._metadata.totalPages.ToString()); if (iCnt > 0) { paramInstrLnk = "?page=" + iCnt.ToString() + "&size=" + pageSizeInstr.ToString(); jsonProdInst = new WebClient().DownloadString(prodInstrLnk + paramInstrLnk); instrobjTmp = JsonConvert.DeserializeObject <CMEInstrument.InstrumentMain>(jsonProdInst); } if (instrobjTmp._embedded != null) { foreach (var inst in instrobjTmp._embedded.instruments) { dtInst.Rows.Add( inst.guid, inst.guidInt, inst.productGuidInt, inst.instrumentName, inst.globexSecurityId, inst.globexSymbol, inst.positionRemovalDate, inst.lastUpdated, inst.lastTradeDate, inst.lastNoticeDate, inst.lastDeliveryDate, inst.globexLastTradeDate, inst.globexFirstTradeDate, inst.firstTradeDate, inst.firstNoticeDate, inst.firstDeliveryDate, inst.finalSettlementDate, inst.initialInventoryDueDate, inst.lastInventoryDueDate, inst.contractMonth, inst.valuationMethod, inst.strikePx, inst.couponRate, inst.tccAlias, inst.itcAlias, // iccalias in DataTable name inst.gbxAlias, inst.clrAlias, inst.firstPositionDate, inst.exchangeClearing ); } DtExecNonQuerySP(dtInst, "USP_CME_InstrumentInsert", "@tblInstrument"); Console.WriteLine("Instrument " + prodGuid + " saved...."); } } Console.WriteLine("Product " + prodGuid); } DtExecNonQuerySP(dt, "USP_CME_ProductInsert", "@tblProducts"); }