public ExchangeRateTicket DownloadTicketForDate(DateTime date) { ValidateDate(date); string url = String.Format("{0}{1}{2}", URL_FRONT, date.ToString("yyyy-MM-dd"), URL_END); string input = null; if (DownloadXMLText(url, out input)) { ExchangeRateTicket ticket = ParseDayTicket(input, date); if (ticket != null) { return(ticket); } else { new CSOBInvalidData("This ticket doesn't exist."); } return(null); } else { new CSOBInvalidDate(input); return(null); } }
// Converting of raw data to managable form private ExchangeRateTicket ParseDayTicket(string text, DateTime date) { byte[] bytes = Encoding.UTF8.GetBytes(text); ExchangeRate er = null; ExchangeRateTicket ticket = new ExchangeRateTicket(); List <ICurrencyData> data = new List <ICurrencyData>(); using (MemoryStream ms = new MemoryStream(bytes)) { XmlSerializer serializer = new XmlSerializer(typeof(ExchangeRate)); er = (ExchangeRate)serializer.Deserialize(ms); } if (er.Country != null) { foreach (var cur in er.Country) { data.Add(new ERDataBase(cur.ID, null, cur.Country, cur.quota, (float)cur.FXcashless.Buy, (float)cur.FXcashless.Sale)); ticket.AddExchangeRateData(data[data.Count - 1]); } ticket.TicketDate = date; return(ticket); } else { return(null); } }
public List <ICurrencyMetada> DownloadCurrencyMetada() { ExchangeRateTicket ticket = DownloadTodaysTicket(); ICurrencyData[] data = ticket.GetExchangeRateData(); List <ICurrencyMetada> metaData = new List <ICurrencyMetada>(data.Length); return(metaData); }
private void ParseDayTicketHeader(string[] header, ref ExchangeRateTicket ticket) { string[] firstLine = header[0].Split(' ', StringSplitOptions.RemoveEmptyEntries); string[] headers = header[1].Split('|', StringSplitOptions.RemoveEmptyEntries); DateTime ticketDate = DateTime.ParseExact(firstLine[0], "dd.MM.yyyy", CultureInfo.CurrentCulture); ticket.TicketDate = ticketDate; }
public ExchangeRateTicket DownloadTicketForDate(DateTime date) { this.ValidateDate(date); var dateString = date.ToString("dd.MM.yyyy"); string url = $"{this.URL_FOR_DAY_TICKET}?date={dateString}"; string text = this.DownloadTicketText(url); ExchangeRateTicket ticket = this.ParseDayTicket(text); return(ticket); }
private ExchangeRateTicket ParseYearExchangeRateData(string[] section, List <ICurrencyMetada> currencyInfos) { ExchangeRateTicket ticket = new ExchangeRateTicket(); for (int i = 1; i < section.Length; i++) { float buy = float.Parse(section[i], CultureInfo.GetCultureInfo("cs-CZ")); ICurrencyMetada metada = currencyInfos[i - 1]; ERDataBase data = new ERDataBase(metada, buy, null); ticket.AddExchangeRateData(data); } return(ticket); }
private List <ExchangeRateTicket> ParseYearBody(string[] body, ref List <ICurrencyMetada> metadata) { List <ExchangeRateTicket> tickets = new List <ExchangeRateTicket>(body.Length); foreach (string line in body) { string[] sections = line.Split('|'); DateTime date = DateTime.ParseExact(sections[0], "dd.MM.yyyy", CultureInfo.CurrentCulture); ExchangeRateTicket ticket = this.ParseYearExchangeRateData(sections, metadata); ticket.TicketDate = date; tickets.Add(ticket); } return(tickets); }
// Converting of raw data to managable form private ExchangeRateTicket ParseDayTicket(string text, DateTime date) { List <RootObject> obj = JsonConvert.DeserializeObject <List <RootObject> >(text); ExchangeRateTicket ticket = new ExchangeRateTicket(); List <ICurrencyData> data = new List <ICurrencyData>(); foreach (var cur in obj[0].exchangeRates) { data.Add(new ERDataBase(cur.currencyISO, cur.currencyFullName, cur.country, cur.currencyUnit, cur.cashBuy, cur.cashSell)); ticket.AddExchangeRateData(data[data.Count - 1]); } ticket.TicketDate = date; return(ticket); }
private void ParseDayTicketBody(string[] body, ref ExchangeRateTicket ticket) { foreach (string line in body) { string[] sections = line.Split('|', StringSplitOptions.RemoveEmptyEntries); string country = sections[0]; string name = sections[1]; int quantity = int.Parse(sections[2]); string isoName = sections[3]; float buy = float.Parse(sections[4], CultureInfo.GetCultureInfo("cs-CZ")); ICurrencyData data = new ERDataBase(isoName, name, country, quantity, buy, null); ticket.AddExchangeRateData(data); } }
// Gets the ticket for this day public ExchangeRateTicket DownloadTodaysTicket() { string jsonInput = null; if (DownloadTicketText(URL_CURRENT_DAY, out jsonInput)) { ExchangeRateTicket ticketOutput = this.ParseDayTicket(jsonInput, DateTime.Today); return(ticketOutput); } else { new KBInvalidDate(jsonInput); return(null); } }
public static ExchangeRateTicket ParseContent(string content) { if (string.IsNullOrEmpty(content)) { throw new ArgumentException("Argument null or empty.", nameof(content)); } var lines = content.Split('\r', '\n'); //first line is date with id, seond line is header if (lines.Length < 2) { return(null); } var ticket = new ExchangeRateTicket();; var dateIdMatch = Regex.Match(lines[0], @"(.*?)\s*#\s*(\d+)"); var dateGroup = dateIdMatch.Groups[0]; if (dateGroup.Success) { if (DateTime.TryParse(dateGroup.Value, out var dt)) { ticket.Date = dt; } } var idGroup = dateIdMatch.Groups[1]; if (idGroup.Success) { if (int.TryParse(idGroup.Value, out var id)) { ticket.Id = id; } } //first line is date with id, seond line is header var itemLines = lines.Skip(2).ToList(); ticket.Items = ParseItems(itemLines).ToList(); return(ticket); }
// Gets the ticket for a specific day public ExchangeRateTicket DownloadTicketForDate(DateTime date) { ValidateDate(date); string jsonInput = null; string urlEnding = date.ToString("yyyy-MM-dd") + "T06:00:00.00Z"; //T06 = 6am - It's the first hour in the day which has upadated ticket for that day. 5am gets you ticket from previous day. if (DownloadTicketText(URL_SPECIFIC_DATE + urlEnding, out jsonInput)) { ExchangeRateTicket ticketOutput = this.ParseDayTicket(jsonInput, date); return(ticketOutput); } else { new KBInvalidDate(jsonInput); return(null); } }
private ExchangeRateTicket ParseDayTicket(string text) { string[] lines = text.Split('\n', StringSplitOptions.RemoveEmptyEntries); if (lines.Length < 2) { throw new CNBInvalidData(message: "Invalid number of lines"); } string[] header = lines.ToList().GetRange(0, 2).ToArray(); string[] body = lines.ToList().GetRange(2, lines.Length - 2).ToArray(); ExchangeRateTicket ticket = new ExchangeRateTicket(); this.ParseDayTicketHeader(header, ref ticket); this.ParseDayTicketBody(body, ref ticket); return(ticket); }
public List <ICurrencyMetada> DownloadCurrencyMetada() { ExchangeRateTicket ticket = DownloadTodaysTicket(); return(ticket.GetExchangeRateData().ToList <ICurrencyMetada>()); }