public void Fill()
{
Rates.Clear();
WebClient webClient = new WebClient();
string url = "";
if (Code.Contains(CurrencyCode.All))
{
url = string.Format("http://www.bankisrael.gov.il/heb.shearim/currency.php?rdate={0}{1}{2}",
LastUpdate.Year,
LastUpdate.Month.ToString().Length == 2 ?
LastUpdate.Month.ToString() :
"0" + LastUpdate.Month.ToString(),
LastUpdate.Day.ToString().Length == 2 ?
LastUpdate.Day.ToString() :
"0" + LastUpdate.Day.ToString());
InternalFill(webClient, url);
}
else
{
foreach (var item in Code)
{
url = string.Format("http://www.bankisrael.gov.il/heb.shearim/currency.php?rdate={0}{1}{2}&curr={3}",
LastUpdate.Year,
LastUpdate.Month.ToString().Length == 2 ?
LastUpdate.Month.ToString() :
"0" + LastUpdate.Month.ToString(),
LastUpdate.Day.ToString().Length == 2 ?
LastUpdate.Day.ToString() :
"0" + LastUpdate.Day.ToString(),
((int)item).ToString().Length == 2 ?
((int)item).ToString() :
"0" + ((int)item).ToString());
InternalFill(webClient, url);
}
}
}
private void InternalFill(WebClient webClient, string url)
{
string res = webClient.DownloadString(url);
XmlDocument doc = new XmlDocument();
doc.LoadXml(res);
foreach (XmlNode item in doc["CURRENCIES"].GetElementsByTagName("CURRENCY"))
{
Rates.Add(new ExchangeRating()
{
Change = double.Parse(item["CHANGE"].InnerText),
Country = item["COUNTRY"].InnerText,
CurrencyCode = (CurrencyCode)Enum.Parse(typeof(CurrencyCode),
item["CURRENCYCODE"].InnerText),
Name = item["NAME"].InnerText,
Unit = int.Parse(item["UNIT"].InnerText),
Rate = double.Parse(item["RATE"].InnerText)
});
}
if (Rates.Count == 0)
{
StringBuilder builder = new StringBuilder();
foreach (XmlNode item in doc["CURRENCIES"])
{
if (item.Name.Contains("ERROR"))
{
builder.Append(item.InnerText);
builder.Append(Environment.NewLine);
}
}
if (builder.Length > 0)
{
throw new Exception(builder.ToString());
}
}
}