using Cysharp.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;
public class HttpTool
{
    /// 
    /// get
    /// 
    /// 
    /// 
    /// 
    public static async Task GetJsonAsync(string uri)
    {
        Debug.Log("akjsbd");
        using (var uwr = UnityWebRequest.Get(uri))
        {
            await uwr.SendWebRequest();
            if (uwr.isNetworkError)
            {
                Debug.LogError(uwr.error);
                return default(T);
            }
            else
            {
                Debug.Log(JsonUtility.FromJson(uwr.downloadHandler.text));
                return JsonUtility.FromJson(uwr.downloadHandler.text);
            }
        }
        
        //if (uwr.result == UnityWebRequest.Result.Success)
        //    return JsonUtility.FromJson(uwr.downloadHandler.text);
        //else
        //{
        //    Debug.LogError(uwr.error);
        //    return default(T);
        //}
    }
    /// 
    /// Post±ķµ„
    /// 
    /// 
    /// 
    /// 
    /// 
    public static async Task PostFromAsync(string uri, Dictionary keyValuePairs)
    {
        WWWForm formData = new WWWForm();
        foreach (var item in keyValuePairs)
        {
            formData.AddField(item.Key, item.Value);
        }
        using (var uwr = UnityWebRequest.Post(uri, formData))
        {
            await uwr.SendWebRequest();
            if (uwr.isNetworkError)
            {
                Debug.LogError(uwr.error);
                return default(T);
            }
            else
                return JsonUtility.FromJson(uwr.downloadHandler.text);
        }
    }
    /// 
    /// PostJson
    /// 
    /// 
    /// 
    /// 
    /// 
    public static async Task PostJsonAysnc(string uri, object jsonObject)
    {
        var jsonString = JsonUtility.ToJson(jsonObject);
        // Debug.Log(jsonString);
        var postData = System.Text.Encoding.Default.GetBytes(jsonString);
        using (var uwr = new UnityWebRequest(uri, "POST"))
        {
            uwr.SetRequestHeader("Content-type", "application/json");
            uwr.uploadHandler = new UploadHandlerRaw(postData);
            uwr.downloadHandler = new DownloadHandlerBuffer();
            await uwr.SendWebRequest();
            if (uwr.isNetworkError)
            {
                Debug.LogError(uwr.error);
                return default(T);
            }
            else
            {
                return JsonUtility.FromJson(uwr.downloadHandler.text);
            }
        }
    }
}