public static Model.StockTimeSeries ParseStockQuotes(JObject jObject) { var properties = jObject.Children().Select(ch => (JProperty)ch).ToArray(); var metadataJson = properties.FirstOrDefault(p => p.Name == Constants.Parsing.MetaDataJsonTokens.MetaDataHeader); var timeSeriesJson = properties.FirstOrDefault(p => p.Name.Contains(Constants.Parsing.TimeSeriesJsonTokens.TimeSeriesHeader)); if (metadataJson == null || timeSeriesJson == null) { throw new StocksParsingException("Unable to parse time-series json"); } var result = new Model.StockTimeSeries(); FillMetadata(metadataJson, result); result.DataPoints = GetStockDataPoints(timeSeriesJson); return(result); }
private static void FillMetadata(JProperty metadataJson, Model.StockTimeSeries timeSeries) { var metadatas = metadataJson.Children().Single(); foreach (var metadataItem in metadatas) { var metadataProperty = (JProperty)metadataItem; var metadataItemName = metadataProperty.Name; var metadataItemValue = metadataProperty.Value.ToString(); if (metadataItemName.Contains(Constants.Parsing.MetaDataJsonTokens.RefreshTimeToken)) { var refreshTime = DateTime.Parse(metadataItemValue); timeSeries.LastRefreshed = DateTime.SpecifyKind(refreshTime, DateTimeKind.Local); } else if (metadataItemName.Contains(Constants.Parsing.MetaDataJsonTokens.SymbolToken)) { timeSeries.Symbol = metadataItemValue; } } }