using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Serialization; namespace Network { public class HttpRequests : MonoBehaviour { public CustomNetworkManager NetworkManager; private string baseUrl = "https://kotpilnya.xyz/slowpoker/api/"; public Dictionary ServerListResponse; public string externalIP = "localhost"; [System.Serializable] public class ServerInfo { public string name; public string address; } void Start() { StartCoroutine(GetExternalIPAddress()); } public void AddServer() { ServerInfo serverInfo = new ServerInfo { name = "Oscar", address = externalIP }; string jsonData = JsonUtility.ToJson(serverInfo); StartCoroutine(SendPostRequest("add_server", jsonData)); } public void GetServerList() { StartCoroutine(SendGetRequest("get_server_list")); } IEnumerator GetExternalIPAddress() { UnityWebRequest request = UnityWebRequest.Get("https://api.ipify.org"); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { Debug.LogError("Error getting external IP address: " + request.error); } else { externalIP = request.downloadHandler.text; // NetworkManager.networkAddress = _externalIP; Debug.Log("External IP Address: " + externalIP); } } IEnumerator SendGetRequest(string endpoint) { UnityWebRequest request = UnityWebRequest.Get(baseUrl + endpoint); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { Debug.LogError("Error: " + request.error); } else { OnGetServerList(request.downloadHandler.text); Debug.Log("Response: " + request.downloadHandler.text); } } IEnumerator SendPostRequest(string endpoint, string jsonData) { UnityWebRequest request = new UnityWebRequest(baseUrl + endpoint, "POST"); byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData); request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.SetRequestHeader("Content-Type", "application/json"); request.downloadHandler = new DownloadHandlerBuffer(); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { Debug.LogError("Error: " + request.error); } else { Debug.Log("Response: " + request.downloadHandler.text); } } IEnumerator SendDeleteRequest(string endpoint) { UnityWebRequest request = UnityWebRequest.Delete(baseUrl + endpoint); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { Debug.LogError("Error: " + request.error); } else { Debug.Log("Response: " + request.downloadHandler.text); } } void OnGetServerList(string response) { string jsonResponse = response; ServerInfo serverInfo = JsonUtility.FromJson(jsonResponse); ServerListResponse = new Dictionary { { "name", serverInfo.name }, { "address", serverInfo.address } }; } } }