using Newtonsoft.Json;
using Example.Models.StaticData;
using Example.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace Example.Connectors
{
    internal class GetPacksData
    {
        public static async Task<ShopPacksModule> LoadPacks(string serverPort, string page)
        {
            try
            {
                string apiurl = $"https://api.whalleybot.com/bot/{serverPort}/GetPacks/{page}";
                var handler = new HttpClientHandler()
                {
                    ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
                };

                using (var client = new HttpClient(handler))
                {
                    client.DefaultRequestHeaders.Add("Authorization", "WhalleyBotOverlay_e-H1rr55f");
                    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                    var apicall = await client.GetAsync(apiurl)
                        .ConfigureAwait(false);
                    var response = apicall;
                    if (response.IsSuccessStatusCode)
                    {
                        var json = response.Content.ReadAsStringAsync().Result;
                        ShopPacksModule Infoserver = JsonConvert.DeserializeObject<ShopPacksModule>(json);
                        Form1Module.OverlayCanOpen = "On";
                        Form1Module.OverlayCanOpenBackcolor = System.Drawing.Color.DarkGreen;
                        Form1Module.OverlayCanOpenForecolor = System.Drawing.Color.White;

                        return Infoserver;
                    }
                    else
                    {
                        if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
                        {
                            Form1Module.WarningMsg = response.ReasonPhrase;
                            Form1Module.OverlayCanOpen = "On";
                            Form1Module.OverlayCanOpenBackcolor = System.Drawing.Color.DarkGreen;
                            Form1Module.OverlayCanOpenForecolor = System.Drawing.Color.White;
                        }
                        else
                        {
                            throw new Exception(response.ReasonPhrase + response.StatusCode);
                        }
                        return null;
                    }

                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Source + ex.Message + ex.Data + ex.StackTrace);
                return null;
            }
        }
    }
}
