| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using MyWeather.Models;
- using System.Net.Http;
- using System.Threading.Tasks;
- using static Newtonsoft.Json.JsonConvert;
- namespace MyWeather.Services
- {
- public enum Units
- {
- Imperial,
- Metric
- }
- public class WeatherService
- {
- const string WeatherCoordinatesUri = "http://api.openweathermap.org/data/2.5/weather?lat={0}&lon={1}&units={2}&appid=fc9f6c524fc093759cd28d41fda89a1b";
- const string WeatherCityUri = "http://api.openweathermap.org/data/2.5/weather?q={0}&units={1}&appid=fc9f6c524fc093759cd28d41fda89a1b";
- const string ForecaseUri = "http://api.openweathermap.org/data/2.5/forecast?id={0}&units={1}&appid=fc9f6c524fc093759cd28d41fda89a1b";
- public async Task<WeatherRoot> GetWeather(double latitude, double longitude, Units units = Units.Imperial)
- {
- using (var client = new HttpClient())
- {
- var url = string.Format(WeatherCoordinatesUri, latitude, longitude, units.ToString().ToLower());
- var json = await client.GetStringAsync(url);
- if (string.IsNullOrWhiteSpace(json))
- return null;
- return DeserializeObject<WeatherRoot>(json);
- }
- }
- public async Task<WeatherRoot> GetWeather(string city, Units units = Units.Imperial)
- {
- using (var client = new HttpClient())
- {
- var url = string.Format(WeatherCityUri, city, units.ToString().ToLower());
- var json = await client.GetStringAsync(url);
- if (string.IsNullOrWhiteSpace(json))
- return null;
- return DeserializeObject<WeatherRoot>(json);
- }
- }
- public async Task<WeatherForecastRoot> GetForecast(int id, Units units = Units.Imperial)
- {
- using (var client = new HttpClient())
- {
- var url = string.Format(ForecaseUri, id, units.ToString().ToLower());
- var json = await client.GetStringAsync(url);
- if (string.IsNullOrWhiteSpace(json))
- return null;
- return DeserializeObject<WeatherForecastRoot>(json);
- }
- }
- }
- }
|