Ejemplo n.º 1
0
 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));
 }
Ejemplo n.º 2
0
        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);
            }
        }