public async Task <T> GetResult <T>() { if (!request.isModifiable) // Request was already sent { await WaitForRequestToFinish(); return(request.GetResult <T>()); } return(await SendRequest(new Response <T>())); }
private static void HandleResult <T>(UnityWebRequest self, Response <T> resp) { if (self.isNetworkError || self.isHttpError) { resp.onError(self, new Exception(self.error)); } else { try { resp.onResult.InvokeIfNotNull(self.GetResult <T>()); } catch (Exception e) { resp.onError(self, e); } } }
public Task <T> GetResult <T>() { waitForRequestToBeConfigured.TrySetResult(true); return(MainThread.instance.ExecuteOnMainThreadAsync(async() => { if (!request.isModifiable) // Request was already sent { await WaitForRequestToFinish(); return request.GetResult <T>(); } return await SendRequest(new Response <T>()); })); }
private static void HandleResult <T>(UnityWebRequest self, Response <T> resp) { if (self.isNetworkError || self.isHttpError) { resp.onError.InvokeIfNotNull(self, new Exception("[" + self.responseCode + "] " + self.error)); } else // .onResult is only informed if there was no network or http error: { try { resp.onResult?.Invoke(self.GetResult <T>()); } catch (Exception e) { resp.onError.InvokeIfNotNull(self, e); } } }
private static IEnumerator SendAndWait <T>(this UnityWebRequest self, Response <T> resp) { var timer = Stopwatch.StartNew(); try { SetupDownloadAndUploadHanders(self, resp); resp.duration = Stopwatch.StartNew(); self.ApplyAllCookiesToRequest(); resp.debugInfo = self.method + " " + self.url; // Log.d("Sending: " + resp); } catch (Exception ex) { resp.onError(self, ex); throw; } var req = self.SendWebRequest(); timer.AssertUnderXms(40); while (!req.isDone) { try { var currentProgress = req.progress * 100; if (resp.progressInPercent.SetNewValue(currentProgress)) { timer.Restart(); resp.onProgress.InvokeIfNotNull(resp.progressInPercent.value); } } catch (Exception ex) { resp.onError(self, ex); throw; } yield return(resp.wait); if (timer.ElapsedMilliseconds > resp.maxMsWithoutProgress) { self.Abort(); } } try { resp.duration.Stop(); // Log.d(" > Finished " + resp); AssertResponseLooksNormal(self, resp); self.SaveAllNewCookiesFromResponse(); if (self.error.IsNullOrEmpty()) { resp.progressInPercent.SetNewValue(100); } resp.getResult = () => { return(self.GetResult <T>()); }; ProcessServerDate(self.uri, self.GetResponseHeader("date")); } catch (Exception ex) { resp.onError(self, ex); throw; } }
public static T GetResult <T>(this UnityWebRequest self, IJsonReader r) { AssertV2.IsTrue(self.isDone, "web request was not done!"); if (TypeCheck.AreEqual <T, UnityWebRequest>()) { return((T)(object)self); } if (typeof(Texture2D).IsCastableTo(typeof(T))) { AssertV2.IsTrue(self.downloadHandler is DownloadHandlerTexture, "self.downloadHandler was not a DownloadHandlerTexture but a " + self.downloadHandler.GetType()); var h = (DownloadHandlerTexture)self.downloadHandler; return((T)(object)h.texture); //return (T)(object)DownloadHandlerTexture.GetContent(self); } if (typeof(T).IsCastableTo <Exception>() && self.GetStatusCode().IsErrorStatus()) { return((T)(object)new NoSuccessError(self.GetStatusCode(), self.GetResult <string>())); } if (TypeCheck.AreEqual <T, HttpStatusCode>()) { return((T)(object)self.GetStatusCode()); } if (TypeCheck.AreEqual <T, Stream>()) { return((T)(object)new MemoryStream(GetBytesResult(self))); } if (TypeCheck.AreEqual <T, byte[]>()) { return((T)(object)GetBytesResult(self)); } if (TypeCheck.AreEqual <T, Headers>()) { return((T)(object)self.GetResponseHeadersV2()); } var text = GetStringResult(self); if (TypeCheck.AreEqual <T, string>()) { return((T)(object)text); } return(r.Read <T>(text)); }
private static IEnumerator SendAndWait <T>(this UnityWebRequest self, Response <T> resp) { SetupDownloadAndUploadHanders(self, resp); resp.duration = Stopwatch.StartNew(); var timer = Stopwatch.StartNew(); self.ApplyAllCookiesToRequest(); if (self.downloadHandler == null) { self.downloadHandler = resp.createDownloadHandler(); } resp.debugInfo = self.method + " " + self.url + " with cookies=[" + self.GetRequestHeader("Cookie") + "]"; Log.d("Sending: " + resp); var req = self.SendWebRequest(); timer.AssertUnderXms(40); while (!req.isDone) { var currentProgress = req.progress * 100; if (resp.progressInPercent.setNewValue(currentProgress)) { timer.Restart(); resp.onProgress.InvokeIfNotNull(resp.progressInPercent.value); } yield return(resp.wait); if (timer.ElapsedMilliseconds > resp.maxMsWithoutProgress) { self.Abort(); } } resp.duration.Stop(); Log.d(" > Finished " + resp); AssertResponseLooksNormal(self, resp); self.SaveAllNewCookiesFromResponse(); if (self.error.IsNullOrEmpty()) { resp.progressInPercent.setNewValue(100); } resp.getResult = () => { return(self.GetResult <T>()); }; }
private static void HandleResult <T>(UnityWebRequest self, Response <T> resp) { if (self.isNetworkError || self.isHttpError) { resp.onError.InvokeIfNotNull(self, new Exception("[" + self.responseCode + "] " + self.error)); } else { try { if (resp.onResult != null) { resp.onResult(self.GetResult <T>()); } else { Log.d("resp.onResult was null, resp.GetResult has to be called manually"); } } catch (Exception e) { resp.onError.InvokeIfNotNull(self, e); } } }
public static T GetResult <T>(this UnityWebRequest self) { return(self.GetResult <T>(JsonReader.GetReader())); }
public T GetResult() { return(_request.GetResult <T>()); }