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; } }