using LY.App.Extensions.DI;
using Newtonsoft.Json;
namespace LY.App.Service
{
    [ServiceInjection(InjectionType.Scoped)]
    public class WeatherService
    {
        private IHttpClientFactory _httpClientFactory;
        private IConfiguration _configuration;
        public WeatherService(IHttpClientFactory httpClientFactory,
            IConfiguration configuration)
        {
            _httpClientFactory = httpClientFactory;
            _configuration = configuration;
        }
        /// 
        /// 爬气象局的天气数据%
        /// 
        /// 
        public async Task GetWeather()
        {
            try
            {
                var client = _httpClientFactory.CreateClient();
                var url = _configuration.GetSection("Weather").Value;
                if (!string.IsNullOrEmpty(url))
                {
                    var resp = await client.GetAsync(url);
                    if (resp.IsSuccessStatusCode)
                    {
                        var data = await resp.Content.ReadAsStringAsync();
                        var result = JsonConvert.DeserializeObject(data);
                        return result?.data;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return null;
        }
        public class Location
        {
            /// 
            /// 54511
            /// 
            public string id { get; set; }
            /// 
            /// 北京
            /// 
            public string name { get; set; }
            /// 
            /// 中国, 北京, 北京
            /// 
            public string path { get; set; }
        }
        public class Now
        {
            /// 
            /// Precipitation
            /// 
            public double precipitation { get; set; }
            /// 
            /// Temperature
            /// 
            public double temperature { get; set; }
            /// 
            /// Pressure
            /// 
            public double pressure { get; set; }
            /// 
            /// Humidity
            /// 
            public double humidity { get; set; }
            /// 
            /// 东北风
            /// 
            public string windDirection { get; set; }
            /// 
            /// WindDirectionDegree
            /// 
            public double windDirectionDegree { get; set; }
            /// 
            /// WindSpeed
            /// 
            public double windSpeed { get; set; }
            /// 
            /// 微风
            /// 
            public string windScale { get; set; }
        }
        /// 
        /// 
        /// 
        public class Data
        {
            /// 
            /// Location
            /// 
            public Location location { get; set; }
            /// 
            /// Now
            /// 
            public Now now { get; set; }
            /// 
            /// Alarm
            /// 
            public List