static void Main(string[] args) { DateTime now = DateTime.Now; TimeAndDateDataAccess timeAndDateDataAccess = new TimeAndDateDataAccess("usa", "philadelphia", now.Month, now.Year); SunriseSunsetTimes sunriseSunsetTimes = timeAndDateDataAccess.GetSunriseSunsetTimesForMonth(); SunriseSunsetTimes.SunriseSunsetTime dayData = sunriseSunsetTimes.DateToSunriseSunsetTime[now.Date]; Console.WriteLine($"day length {dayData.DayLength}, difference {dayData.DayLengthDifference}, sunrise {dayData.Sunrise}, sunset {dayData.Sunset}"); }
public SunriseSunsetTimes GetSunriseSunsetTimesForMonth() { FileSerializer fileSerializer = new FileSerializer(); SunriseSunsetTimes cachedData = (SunriseSunsetTimes)fileSerializer.Load(CacheFilePath); if (cachedData == null || !(cachedData.Country == Country && cachedData.City == City && cachedData.DateToSunriseSunsetTime.Keys.Count > 0 && cachedData.DateToSunriseSunsetTime.ContainsKey(new DateTime(Year, Month, 1)))) // TODO redesign { cachedData = GetSunriseSunsetTimesForMonthWithNoCache(); fileSerializer.Save(CacheFilePath, cachedData); } return(cachedData); }
public SunriseSunsetTimes GetSunriseSunsetTimesForMonthWithNoCache() { HtmlDocument document = new HtmlWeb().Load($"{URL}/{Country}/{City}?month={Month}&year={Year}"); var dayNodes = document.DocumentNode.SelectNodes("//tr[@data-day]"); SunriseSunsetTimes sunriseSunsetTimes = new SunriseSunsetTimes(); sunriseSunsetTimes.Country = Country; sunriseSunsetTimes.City = City; sunriseSunsetTimes.DateToSunriseSunsetTime = new Dictionary <DateTime, SunriseSunsetTimes.SunriseSunsetTime>(); foreach (HtmlNode node in dayNodes) { int dayOfMonth = Convert.ToInt32(node.Attributes["data-day"].Value); DateTime date = new DateTime(Year, Month, dayOfMonth); string sunrise = node.ChildNodes[1].InnerText; string sunset = node.ChildNodes[2].InnerText; string dayLength = node.ChildNodes[3].InnerText; string difference = node.ChildNodes[4].InnerText; sunriseSunsetTimes.DateToSunriseSunsetTime.Add(date, new SunriseSunsetTimes.SunriseSunsetTime(sunrise, sunset, dayLength, difference)); } return(sunriseSunsetTimes); }