private IEnumerator MakeAPIRequest(string value, WebRequestOnDataReceiveDelegate onDataReceiveDelegate) { while (token == null) // Token retrieval is started during start. { yield return(new WaitForEndOfFrame()); } string url = API_URL + value; Debug.Log("Start API Request to " + url); UnityWebRequest contentRequest = UnityWebRequest.Get(url); contentRequest.SetRequestHeader("Content-Type", "application/json"); contentRequest.SetRequestHeader("Bearer", token); StartCoroutine(RequestCoroutine(contentRequest)); float elapsedContentRequestTime = 0; while (contentRequest.result == UnityWebRequest.Result.InProgress) { elapsedContentRequestTime += Time.deltaTime; yield return(new WaitForEndOfFrame()); if (elapsedContentRequestTime >= apiRequestTimeout) { throw new TimeoutException("Failed to make request to API in time!"); } } Debug.Log("Finished API Request to " + url); onDataReceiveDelegate(contentRequest.downloadHandler.text); }
private IEnumerator RequestDataCoroutine(UnityWebRequest request, WebRequestOnDataReceiveDelegate dataDelegate) { yield return(request); dataDelegate(request.downloadHandler.text); }