/// <summary> /// Parses tenforward for csv data /// </summary> /// <param name="fileDate"></param> /// <param name="csvData"></param> /// <returns></returns> private List <NewsItem> ParseDailyFxCsv(DateTime fileDate, string csvData) { var list = new List <NewsItem>(); var tzs = new List <TimeZoneInfo>(); // Diff EST to UTC Diff // This is very very very nasty should use time zones!!! will fail on EST Day Time Saving var ts_est_utc = new TimeSpan(0, -5, 0, 0); //Highjacking the TimeZones from the system since the Robot does something the the default Timezone, and I don't want to spend more time on this tzs = System.TimeZoneInfo.GetSystemTimeZones().ToList(); foreach (TimeZoneInfo tz in tzs) { if (tz.Id == "Eastern Standard Time") { //If we have a match overwrite the static value with the offset ts_est_utc = tz.BaseUtcOffset; } } using (var reader = new StringReader(csvData)) { using (var fields = new CsvReader(reader, true)) { while (fields.ReadNextRecord()) { var newsItem = new NewsItem(); int i = 0; var dateStr = fields[i++]; var timeStr = fields[i++]; newsItem.UtcDateTime = GetDateTime(fileDate, dateStr, timeStr).Subtract(ts_est_utc); newsItem.TimeZone = ""; newsItem.Currency = fields[i++].ToUpper(); //parse importance var importance = fields[i++].ToLower(); newsItem.Importance = ParsingUtil.ParseImportance(importance); var newsEvent = fields[i++]; //if event start with currency - remove it if (newsEvent.StartsWith(newsItem.Currency + " ")) { newsEvent = newsEvent.Substring(4); } newsItem.Event = newsEvent; newsItem.Actual = fields[i++]; newsItem.Forecast = fields[i++]; newsItem.Previous = fields[i++]; list.Add(newsItem); } } } return(list); }
/// <summary> /// Parses DailyFx csv data /// </summary> /// <param name="fileDate"></param> /// <param name="csvData"></param> /// <returns></returns> private List <NewsItem> ParseDailyFxCsv(DateTime fileDate, string csvData) { var list = new List <NewsItem>(); using (var reader = new StringReader(csvData)) { using (var fields = new CsvReader(reader, true)) { while (fields.ReadNextRecord()) { var newsItem = new NewsItem(); int i = 0; var dateStr = fields[i++]; var timeStr = fields[i++]; newsItem.UtcDateTime = GetDateTime(fileDate, dateStr, timeStr); newsItem.TimeZone = fields[i++]; newsItem.Currency = fields[i++].ToUpper(); var newsEvent = fields[i++]; //if event start with currency - remove it if (newsEvent.StartsWith(newsItem.Currency + " ")) { newsEvent = newsEvent.Substring(4); } newsItem.Event = newsEvent; //parse importance var importance = fields[i++].ToLower(); newsItem.Importance = ParsingUtil.ParseImportance(importance); newsItem.Actual = fields[i++]; newsItem.Forecast = fields[i++]; newsItem.Previous = fields[i++]; list.Add(newsItem); } } } return(list); }