/// <summary> /// Read locally downloaded Ledger /// </summary> /// <returns></returns> private GetLedgerResult ReadLedger() { string pathLib = GetLedgerLibraryPath(); GetLedgerResult res = new GetLedgerResult { Ledger = new Dictionary <string, LedgerInfo>() }; if (File.Exists(pathLib)) { List <string[]> csv = StaticLibrary.LoadCsvFile(pathLib); bool isHeaders = true; string[] headers = null; foreach (string[] array in csv) { if (isHeaders) { headers = array; isHeaders = false; } else { Tuple <string, LedgerInfo> li = DataLibraryStaticLibrary.ReadLedgerItems(array, headers); res.Ledger.Add(li.Item1, li.Item2); } } } return(res); }
/// <summary> /// Request the Ledger from Kraken and save it locally /// </summary> /// <param name="useKraken"></param> public void LoadLedger(bool useKraken = false) { GetLedgerResult res = ReadLedger(); if (useKraken || res.Ledger.Count == 0) { GetLedgerResult res1 = GetFullKrakenLedger(); Ledger = res1.Ledger; SaveLedger(Ledger); } else { Ledger = res.Ledger; } }
/// <summary> /// Request entire Ledger history from Kraken /// </summary> /// <returns></returns> private GetLedgerResult GetFullKrakenLedger() { GetLedgerResult res1 = GetKrakenLedger(0); int ofs = res1.Ledger.Count; while (ofs < res1.Count) { GetLedgerResult res2 = KrakenApi.GetLedgers(ofs: ofs); foreach (string key in res2.Ledger.Keys) { res1.Ledger.Add(key, res2.Ledger[key]); ofs++; } } return(res1); }