Exemplo n.º 1
0
        static void FillModel(IList <string> values, CurrencyDetails model, ModelIndexes indexes, string code)
        {
            DateTime forDate;

            DateTime.TryParse(values[indexes.ForDate], out forDate);
            model.Date = forDate;

            uint coins;

            if (indexes.Coins != -1)
            {
                uint.TryParse(values[indexes.Coins].Split('.')[0], out coins);
                model.Coins = coins;
            }

            decimal marketCap;

            decimal.TryParse(values[indexes.MarketCap], NumberStyles.Any, CultureInfo.InvariantCulture, out marketCap);
            model.MarketCap = marketCap;

            decimal price;

            decimal.TryParse(values[indexes.Price], NumberStyles.Any, CultureInfo.InvariantCulture, out price);
            model.Price = price;
        }
Exemplo n.º 2
0
        public IEnumerable <CurrencyDetails> GetDetails(string currencyCode)
        {
            if (null == currencyCode || !currencyCodes.ContainsKey(currencyCode))
            {
                yield break;
            }

            lock (LockObject)
            {
                using (var f = File.OpenText(Path.Combine(tempDir, currencyCode + ".csv")))
                {
                    var headerLine = f.ReadLine();
                    var indexes    = FillModelIndexer(headerLine);
                    if (null != indexes)
                    {
                        while (!f.EndOfStream)
                        {
                            var line = f.ReadLine();
                            if (!string.IsNullOrWhiteSpace(line))
                            {
                                var currentValues = line.Split(',');
                                if (currentValues.Length > indexes.Ceiling)
                                {
                                    var model = new CurrencyDetails();
                                    FillModel(currentValues, model, indexes, currencyCode);
                                    yield return(model);
                                }
                                else
                                {
                                    Debug.Assert(true);
                                }
                            }
                        }
                    }
                    else
                    {
                        Debug.Assert(true);
                    }
                }
            }
        }