private string GetRequestUrl(ForecastRequest forecastRequest, string api) { return $"http://api.openweathermap.org/data/2.5/{api}?q=" + $"{forecastRequest.Location.City}," + $"{forecastRequest.Location.Country}" + $"&appid={this.appid}" + $"&units={this.GetUnits(forecastRequest.Units)}"; }
public OpenWeatherMapServiceTests() { this.mockedMessageHandler = new Mock<HttpMessageHandler>(); this.sut = new OpenWeatherMapService(new HttpClient(this.mockedMessageHandler.Object)); this.request = new ForecastRequest { Location = new GeoLocation { City = "London", Country = "uk" }, Units = MeasureUnits.Celsium }; }
public async Task<List<DailyForecast>> GetDailyForecastAsync(ForecastRequest forecastRequest, DateTime fromDate, DateTime toDate) { var url = GetRequestUrl(forecastRequest, "forecast"); var response = await httpClient.GetStringAsync(url); var forecast = JsonConvert.DeserializeObject<DailyForecastResponse>(response); var dailyForecasts = forecast.ToDailyForecasts(); dailyForecasts.Select(df => df.Units = forecastRequest.Units); return dailyForecasts.Where(df => df.Date >= fromDate && df.Date<=toDate).ToList(); }
public async Task<CurrentWeather> GetCurrentWeatherAsync(ForecastRequest forecastRequest) { var url = GetRequestUrl(forecastRequest, "weather"); var response = await httpClient.GetStringAsync(url); var forecast = JsonConvert.DeserializeObject<CurrentWeatherResponse>(response); var currentWeather = forecast.ToCurrentWeather(); currentWeather.Units = forecastRequest.Units; return currentWeather; }