using System.Net.Http.Json; using MemphisWeatherApp.Models; namespace MemphisWeatherApp.Services { public class WeatherService { private readonly HttpClient _httpClient; private const string ApiKey = "baf21bc93e198c3367ee2f3dae4fd38c"; // Top Secret!! public WeatherService(HttpClient httpClient) { _httpClient = httpClient; } public async Task GetWeatherAsync() { try { var response = await _httpClient.GetFromJsonAsync( $"https://api.openweathermap.org/data/2.5/weather?q=Memphis,us&units=imperial&appid={ApiKey}"); if (response == null) return new WeatherInfo { City = "Memphis", Description = "Data unavailable", Temperature = 0, Icon = "" }; return new WeatherInfo { City = "Memphis", Temperature = response.Main.Temp, Description = response.Weather[0].Description, Humidity = response.Main.Humidity, WindSpeed = response.Wind.Speed, Icon = $"https://openweathermap.org/img/wn/{response.Weather[0].Icon}@2x.png" }; } catch { // Return if API broken return new WeatherInfo { City = "Memphis", Temperature = 404, Description = "API Broke", Humidity = 100, WindSpeed = 200, Icon = "https://openweathermap.org/img/wn/02d@2x.png" }; } } } // Response model for OpenWeatherMap API public class OpenWeatherResponse { public WeatherMain Main { get; set; } = new(); public WeatherWind Wind { get; set; } = new(); public WeatherItem[] Weather { get; set; } = Array.Empty(); } public class WeatherMain { public double Temp { get; set; } public int Humidity { get; set; } } public class WeatherWind { public double Speed { get; set; } } public class WeatherItem { public string Description { get; set; } = string.Empty; public string Icon { get; set; } = string.Empty; } }