public async Task <WeatherViewModel> Handle(CityCurrentWeatherQuery request, CancellationToken cancellationToken) { var apiWeatherDataString = await _router.SendRequest(HttpMethod.Get, $"weather?q={request.CityName}&units={_units}", cancellationToken); WeatherContainerDTO weatherApiData = JsonConvert.DeserializeObject <WeatherContainerDTO>(apiWeatherDataString); return(Mapper.Map <Weather, WeatherViewModel>(Weather.SuppliedFrom(weatherApiData))); }
public static Weather SuppliedFrom(WeatherContainerDTO apiWeatherData) { if (apiWeatherData.Cod != 0 && apiWeatherData.Cod != 200) { throw new ApiException(apiWeatherData.Message, HttpStatusCode.BadRequest); } var temp = apiWeatherData.Main?.Temp; var humidity = apiWeatherData.Main?.Humidity; var windSpeed = apiWeatherData.Wind?.Speed; var weather = apiWeatherData.Weather.Any() ? apiWeatherData.Weather[0] : null; return(new Weather(apiWeatherData.Name != null ? apiWeatherData.Name : string.Empty, weather != null ? weather.Main : string.Empty, weather != null ? weather.Description : string.Empty, weather != null ? weather.Icon : string.Empty, temp != null ? Convert.ToDecimal(temp.Value) : 0, humidity != null ? Convert.ToInt32(humidity.Value) : 0, windSpeed != null ? Convert.ToDecimal(windSpeed.Value) : 0, Convert.ToDateTime(apiWeatherData.Dt_txt))); }