Example #1
0
    private IEnumerator Interceptors(Method method, string uri, Payloads payload = null, Dictionary <string, string> pathParams = null, Callback callback = null, Fallback fallback = null)
    {
        UnityWebRequest webRequest = new UnityWebRequest(baseUri + uri, method.ToString());

        webRequest.SetRequestHeader("Content-Type", "application/json");

        webRequest.SetRequestHeader("Authorization", "Bearer " + Token.GetToken());


        if (payload != null)
        {
            byte[] bodyRaw = Encoding.UTF8.GetBytes(PostSerializer.SerializePostData(payload));

            webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);
        }

        webRequest.downloadHandler = new DownloadHandlerBuffer();


        yield return(webRequest.SendWebRequest());

        if (webRequest.isNetworkError)
        {
            if (webRequest.responseCode == 0)
            {
                webRequest.Abort();

                Request request = new Request(method, uri, payload, pathParams);

                Resend(request, callback, fallback);
            }
        }

        else if (webRequest.isHttpError)
        {
            if (webRequest.responseCode == CODE_BLACKLISTED_USER)
            {
                // Save Request, Callback and Fallback
                State.PendingFullRequestWhileRefreshingToken = new FullRequest(
                    new Request(method, uri, payload, pathParams),
                    callback, fallback
                    );

                RefreshToken.Refresh();
            }

            else
            {
                var responseJson = webRequest.downloadHandler.text;

                fallback(webRequest.responseCode, responseJson);
            }
        }

        else
        {
            var responseJson = webRequest.downloadHandler.text;

            callback(webRequest.responseCode, responseJson);
        }
    }