public void HandleRequestResponse()
        {
            WWW www = _publisher.getResponse();

            if (www == null)
            {
                Debug.LogError("Request is empty (WWW object is null)");
                return;
            }

            JSONNode jsonResponse = parseResponse(www);

            switch (_state)
            {
            case ExporterState.CHECK_VERSION:
                if (jsonResponse != null && jsonResponse[0]["tag_name"] != null)
                {
                    _latestVersion = jsonResponse[0]["tag_name"];
                    _checkVersionSuccess();
                }
                else
                {
                    _latestVersion = "";
                    _checkVersionFailed();
                }
                break;

            case ExporterState.REQUEST_CODE:
                if (jsonResponse["access_token"] != null)
                {
                    _access_token = jsonResponse["access_token"];
                    expiresIn     = jsonResponse["expires_in"].AsFloat;
                    lastTokenTime = convertToSeconds(DateTime.Now);
                    _publisher.saveAccessToken(_access_token);
                    if (_tokenRequestSuccess != null)
                    {
                        _tokenRequestSuccess();
                    }
                }
                else
                {
                    if (_tokenRequestFailed != null)
                    {
                        _tokenRequestFailed();
                    }
                }
                break;

            case ExporterState.PUBLISH_MODEL:
                if (www.responseHeaders["STATUS"].Contains("201") == true)
                {
                    _lastModelUrl = SketchfabPlugin.Urls.modelUrl + "/" + getUrlId(www.responseHeaders);
                    if (_uploadSuccess != null)
                    {
                        _uploadSuccess();
                    }
                }
                else
                {
                    _lastError = www.responseHeaders["STATUS"];
                    if (_uploadFailed != null)
                    {
                        _uploadFailed();
                    }
                }
                break;
            //case ExporterState.GET_CATEGORIES:
            //	string jsonify = this.jsonify(www.text);
            //	if (!jsonify.Contains("results"))
            //	{
            //		Debug.Log(jsonify);
            //		Debug.Log("Failed to retrieve categories");
            //		publisher.setIdle();
            //		break;
            //	}

            //	JSONArray categoriesArray = JSON.Parse(jsonify)["results"].AsArray;
            //	foreach (JSONNode node in categoriesArray)
            //	{
            //		categories.Add(node["name"], node["slug"]);
            //		categoriesNames.Add(node["name"]);
            //	}
            //	setIdle();
            //	break;
            case ExporterState.USER_ACCOUNT_TYPE:
                string accountRequest = this.jsonify(www.text);
                if (!accountRequest.Contains("account"))
                {
                    _lastError = "Failed to retrieve user account type";
                    if (_checkUserAccountFailure != null)
                    {
                        _checkUserAccountFailure();
                    }
                    break;
                }
                else
                {
                    var    userSettings = JSON.Parse(accountRequest);
                    string account      = userSettings["account"];
                    _currentUserPlan = getPlan(account);
                    _userDisplayName = userSettings["displayName"];
                    if (_checkUserAccountSuccess != null)
                    {
                        _checkUserAccountSuccess();
                    }
                }
                break;

            case ExporterState.CAN_PRIVATE:
                string canPrivateRequest = this.jsonify(www.text);
                if (!canPrivateRequest.Contains("canProtectModels"))
                {
                    Debug.Log("Failed to retrieve if user can private");
                    setIdle();
                    break;
                }
                _userCanPrivate = jsonResponse["canProtectModels"].AsBool;
                break;
            }
        }