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); } }
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); } }