public void SelectFiltered <T>(EasyTableQuery <T> query, Action <CallbackResponse <SelectFilteredResult <T> > > onSelectCompleted) where T : AzureObjectBase { Utilities.ValidateForNull(onSelectCompleted); //query can be null StartCoroutine(SelectFilteredInternal(query, onSelectCompleted)); }
private IEnumerator SelectFilteredInternal <T>(EasyTableQuery <T> query, Action <CallbackResponse <SelectFilteredResult <T> > > onSelectCompleted) where T : AzureObjectBase { string url = GetTablesUrl <T>(); if (query != null) { url += "?" + query.ToODataString(); } if (Globals.DebugFlag) { Debug.Log(url); } using (UnityWebRequest www = Utilities.BuildWebRequest(url, HttpMethod.Get.ToString(), null, AuthenticationToken)) { yield return(www.Send()); if (Globals.DebugFlag) { Debug.Log(www.responseCode); } CallbackResponse <SelectFilteredResult <T> > response = new CallbackResponse <SelectFilteredResult <T> >(); if (Utilities.IsWWWError(www)) { if (Globals.DebugFlag) { Debug.Log(www.error); } Utilities.BuildResponseObjectOnFailure(response, www); } else { try { response.Status = CallBackResult.Success; //reported issue when fetching many rows string textResponse = www.downloadHandler.text.Replace("\n", ""); //reported issue on OSX if (textResponse.Trim() == string.Empty) { throw new Exception("downloadHandler is empty"); } SelectFilteredResult <T> selectFilteredResult = null; if (query.RequestTotalCount) { selectFilteredResult = JsonUtility.FromJson <SelectFilteredResult <T> >(textResponse); } else { selectFilteredResult = new SelectFilteredResult <T>(); T[] data = JsonHelper.GetJsonArray <T>(www.downloadHandler.text); selectFilteredResult.results = data; selectFilteredResult.count = -1; } response.Result = selectFilteredResult; } catch (Exception ex) { Utilities.BuildResponseObjectOnException(response, ex); } } onSelectCompleted(response); } }