private IEnumerator PostScore(HighScoreEntry score, Keraysera era) { while (Settings.token == "") { yield return(null); } var newScore = JsonUtility.ToJson(score); using (var www = UnityWebRequest.Put(uri + era.pokaName + "/" + id + ".json?auth=" + Settings.token, newScore)) { www.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(newScore)); www.timeout = 5; yield return(www.SendWebRequest()); if (www.isNetworkError || www.isHttpError) { if (Time.realtimeSinceStartup - tokenLastFetched > tokenFetchUpdateLimit) { StartCoroutine(GetAuth()); } era.onNewTimePosted(NetWorkResponse.NoConnection, "Ei internet-yhteyttä. Aikaasi ei päivitetty online-tietokantaan."); } else { era.onNewTimePosted(NetWorkResponse.Success, "Aikasi on päivitetty online-tietokantaan."); era.userBestTime = score.time; } } }
private IEnumerator GetScores(Keraysera era) { while (Settings.token == "") { yield return(null); } string orderBy = "\"time\""; using (var www = UnityWebRequest.Get(uri + era.pokaName + ".json" + "?orderBy=" + orderBy + "&limitToFirst=100" + "&auth=" + Settings.token)) { www.SetRequestHeader("Content-Type", "application/json"); www.timeout = 5; var request = www.SendWebRequest(); yield return(request); if (www.isNetworkError || www.isHttpError) { if (Time.realtimeSinceStartup - tokenLastFetched > tokenFetchUpdateLimit) { StartCoroutine(GetAuth()); } era.onHighScoreListLoaded(NetWorkResponse.NoConnection); } else { string result = www.downloadHandler.text; Dictionary <string, HighScoreEntry> entryDict = JsonConvert.DeserializeObject <Dictionary <string, HighScoreEntry> >(result); if (entryDict != null) { var temp = entryDict.OrderBy(a => a.Value.time); era.userLeaderBoardIndex = temp.Select(x => x.Key).ToList().IndexOf(id); era.highScoreList = temp.Select(x => x.Value).ToList(); era.isHighScoreListUpdated = true; era.timeSinceLastListUpdate = Time.realtimeSinceStartup; era.onHighScoreListLoaded(NetWorkResponse.Success); } else { era.onHighScoreListLoaded(NetWorkResponse.NoData); } } } }
private IEnumerator _FindUser(Keraysera era) { while (Settings.token == "") { yield return(null); } var requestUri = uri + era.pokaName + "/" + id + "/time.json" + "?shallow=true" + "&auth=" + Settings.token; using (var www = UnityWebRequest.Get(requestUri)) { www.SetRequestHeader("Content-Type", "application/json"); www.timeout = 5; var request = www.SendWebRequest(); yield return(request); if (www.isNetworkError || www.isHttpError) { if (Time.realtimeSinceStartup - tokenLastFetched > tokenFetchUpdateLimit) { StartCoroutine(GetAuth()); } era.onUserBestTimeUpdated(NetWorkResponse.NoConnection, -2f); } else { string result = www.downloadHandler.text; if (result == "null") { era.onUserBestTimeUpdated(NetWorkResponse.NoData, -1f); } else { var _time = float.Parse(result, CultureInfo.InvariantCulture.NumberFormat); era.userBestTime = _time; era.onUserBestTimeUpdated(NetWorkResponse.Success, _time); } } } }
public void FindUser(Keraysera era) => StartCoroutine(_FindUser(era));
public void PostNewScore(HighScoreEntry score, Keraysera era) => StartCoroutine(PostScore(score, era));
public void GetHighScores(Keraysera era) => StartCoroutine(GetScores(era));