Example #1
0
    private static IEnumerator SendRequestBody(string url, object parameters, string contentType, Func <AnswerModel, IEnumerator> successMethod, Action <AnswerModel> errorMethod, string loadingPanelsKey, DataType type, bool forceUpdate, Action <AnswerModel> preSuccessMethod, Action finallyMethod)
    {
        AnswerModel response = new AnswerModel();

        yield return(StartRequest(url, parameters, contentType, forceUpdate, type, response, loadingPanelsKey));

        try
        {
            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                if (preSuccessMethod != null)
                {
                    preSuccessMethod(response);
                }
                if (successMethod != null)
                {
                    yield return(successMethod(response));
                }
            }
            else
            {
                HandleRequestError(response, errorMethod);
            }
        }
        finally
        {
            if (finallyMethod != null)
            {
                finallyMethod();
            }
            Extensions.ShowGameObjects(LoadingManager.GetPanelsByKey(loadingPanelsKey), false);
        }
    }
Example #2
0
    public static IEnumerator StartRequest(string url, object parameters, string contentType, bool forceUpdate, DataType type, AnswerModel response, string loadingPanelsKey)
    {
        forceUpdate = GetForceUpdate(type, forceUpdate);

        if (forceUpdate)
        {
            Extensions.ShowGameObjects(LoadingManager.GetPanelsByKey(loadingPanelsKey));
        }

        while (GameController.PersistentDataPath == null)
        {
            yield return(null);
        }
        string parms = string.Empty;

        IEnumerator e = SerializeParameters(parameters);

        yield return(e);

        parms = e.Current as string;

        if (!forceUpdate)
        {
            string data = Extensions.LoadJsonData(type);
            if (!string.IsNullOrEmpty(data) || type == DataType.UserInfo)
            {
                response.SetFields(new AnswerModel(data));
            }
        }
        if (response.StatusCode == 0)
        {
            forceUpdate = true;
            LoadingManager.PanelKeyToEnable = loadingPanelsKey;
            var req = CreateRequest(url, parms, contentType, LoginManager.Instance.Headers);
            yield return(SendRequest(req));

            SetResponse(response, req);
        }

        if (NeedSave(response.StatusCode, forceUpdate, type))
        {
            Extensions.SaveJsonDataAsync(type, response.Text);
        }
    }