public static void Main(string[] args) { var serviceProvider = IoC.CongifureServices(); var logger = serviceProvider.GetService <ILoggerFactory>() .CreateLogger <Program>(); var weatherDataReader = serviceProvider.GetService <IWeatherDataReader>(); var weatherDataLines = weatherDataReader.ReadLines(File.OpenRead(args[0])); var dayWithLowestTemperatureSpread = WeatherDataQuery.GetDayNumberWithLowestTemperatureSpread(weatherDataLines); logger.LogInformation($"Day {dayWithLowestTemperatureSpread} has lowest temperature spread."); System.Console.ReadKey(); }
/// <summary> /// Read and convert Json /// </summary> /// <param name="reader"></param> /// <param name="objectType"></param> /// <param name="existingValue"></param> /// <param name="serializer"></param> /// <returns></returns> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jo = JObject.Load(reader); var result = new WeatherDataQuery(); foreach (var jItem in jo.Children()) { if (jItem.Path.ToLower().Contains("fahren")) { result.TempMetric = (int)Unit.Temperature.F; } if (jItem.Path.ToLower().Contains("celsi")) { result.TempMetric = (int)Unit.Temperature.C; } if (jItem.Path.ToLower().Contains("mph")) { result.SpeedMetric = (int)Unit.Speed.MPH; } if (jItem.Path.ToLower().Contains("kph")) { result.SpeedMetric = (int)Unit.Speed.KPH; } if (jItem.Path.ToLower().Contains("temp")) { result.Temperature = jItem.First.Value <double>(); } if (jItem.Path.ToLower().Contains("wind")) { result.WindSpeed = jItem.First.Value <double>(); } if (jItem.Path.ToLower().Contains("where")) { result.Location = jItem.First.Value <string>(); } if (jItem.Path.ToLower().Contains("location")) { result.Location = jItem.First.Value <string>(); } } return(result); }