in Blog-Sqlite/SqlLite.UI/MainWindow.xaml.cs [45:82]
private async void BtnGetWeather_OnClick(object sender, RoutedEventArgs e)
{
if (string.IsNullOrWhiteSpace(openWeatherApiKey)) return;
var result = string.Empty;
var city = (string.IsNullOrWhiteSpace(TbCity.Text)) ? defaultCity : TbCity.Text.Trim();
var uri = $"{baseUri}/{weatherEndpoint}?q={city}&{openWeatherApiParam}{openWeatherApiKey}";
using (var client = new HttpClient())
{
var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var jsonData = JObject.Parse(json);
if (jsonData.SelectToken(COD).ToString() == ValidCod)
{
var name = jsonData.SelectToken(NameSelector).ToString();
var weathers = jsonData.SelectToken(WeatherSelector).Select(w => new Weather(w)).ToList();
var main = new Main(jsonData.SelectToken(MainSelector));
if (weathers.Any())
{
this.weather = weathers.FirstOrDefault();
IMGWeatherIcon.Source = new BitmapImage(new Uri($"{iconUri}{weather.Icon}.{icontype}"));
}
result = $"Weather for {name}:{Environment.NewLine}{weathers.FirstOrDefault()?.Description} @ {main.Temperature.CelsiusCurrent}°C";
}
}
else
{
result = response.ReasonPhrase;
}
}
TbResult.Text = result;
}