private IEnumerator StartRequest(RequestContainer requestContainer)
        {
            byte[] postData = null;
            if (requestContainer.Request.Verb == Request.VERB.POST)
            {
                string body = JsonConvert.SerializeObject(requestContainer.Request.Data);
                postData = System.Text.Encoding.UTF8.GetBytes(body);
            }
            else
            {
                requestContainer.FullUrl += "?";
                string jsonParams = JsonConvert.SerializeObject(requestContainer.Request.Data);
                Dictionary <string, object> urlParams = JsonConvert.DeserializeObject <Dictionary <string, object> >(jsonParams);
                bool firstParam = true;
                foreach (var p in urlParams)
                {
                    if (!firstParam)
                    {
                        requestContainer.FullUrl += "&";
                    }
                    requestContainer.FullUrl += p.Key + "=" + p.Value;

                    if (firstParam)
                    {
                        firstParam = false;
                    }
                }
            }

            WWW www = new WWW(requestContainer.FullUrl, postData, requestContainer.Request.Header);

            if (OnRequestStart != null)
            {
                OnRequestStart.Invoke();
            }

            yield return(www);

            //No error?
            if (string.IsNullOrEmpty(www.error))
            {
                requestContainer.JsonResponse = www.text;
                requestContainer.SuccessCallback();
            }
            else
            {
                MundiPaggError error = ConvertError(www.error, www.text);
                //Call error callback
                requestContainer.ErrorCallback(error);
            }

            if (OnRequestEnd != null)
            {
                OnRequestEnd.Invoke();
            }
        }
Пример #2
0
    public void CreateNewCharacter(WWWForm forms, OnRequestEnd onRequestEnd)
    {
        string url = API + "NewCharacter.php";

        if (coWebReq != null)
        {
            StopCoroutine(coWebReq);
        }
        coWebReq = StartCoroutine(RequestWeb(url, forms, 10f, "Create new Character", onRequestEnd));
    }
Пример #3
0
    public void Session_List(OnRequestEnd onRequestEnd)
    {
        string url = API + "SessionList.php";

        WWWForm forms = new WWWForm();

        //forms.AddField("loginPost", accountName);
        //string encodedPswd = accountPassword.GetHashCode().ToString();
        //forms.AddField("passwordPost", encodedPswd);

        if (coWebReq != null)
        {
            StopCoroutine(coWebReq);
        }
        coWebReq = StartCoroutine(RequestWeb(url, forms, 10f, "Refresh session list", onRequestEnd));
    }
Пример #4
0
    public void Create_Account(string accountName, string accountPassword, OnRequestEnd onRequestEnd)
    {
        string url = API + "NewAccount.php";

        WWWForm forms = new WWWForm();

        forms.AddField("loginPost", accountName.ToLower());
        string encodedPswd = accountPassword.GetHashCode().ToString();

        forms.AddField("passwordPost", encodedPswd);

        if (coWebReq != null)
        {
            StopCoroutine(coWebReq);
        }
        coWebReq = StartCoroutine(RequestWeb(url, forms, 10f, "Check account", onRequestEnd));
    }
Пример #5
0
    public void ClassesRacesList(OnRequestEnd onRequestEnd, bool inBackground = false)
    {
        string  url   = API + "GetClassesRaces.php";
        WWWForm forms = new WWWForm();

        if (inBackground)
        {
            StartCoroutine(RequestWeb(url, forms, 10f, "Refresh classes and races", onRequestEnd, inBackground));
        }
        else
        {
            if (coWebReq != null)
            {
                StopCoroutine(coWebReq);
            }
            coWebReq = StartCoroutine(RequestWeb(url, forms, 10f, "Refresh classes and races", onRequestEnd, inBackground));
        }
    }
Пример #6
0
    public void CharacterList(int idSession, OnRequestEnd onRequestEnd, bool inBackground = false)
    {
        string url = API + "CharactersLobby.php";

        WWWForm forms = new WWWForm();

        forms.AddField("SessionIDPost", idSession);

        if (inBackground)
        {
            StartCoroutine(RequestWeb(url, forms, 10f, "Refresh character", onRequestEnd, inBackground));
        }
        else
        {
            if (coWebReq != null)
            {
                StopCoroutine(coWebReq);
            }
            coWebReq = StartCoroutine(RequestWeb(url, forms, 10f, "Refresh character", onRequestEnd, inBackground));
        }
    }
Пример #7
0
    IEnumerator RequestWeb(string url, WWWForm forms, float timeOut, string loadingFeedback, OnRequestEnd onRequestEnd, bool inBackground = false)
    {
        UnityWebRequest webRequest            = UnityWebRequest.Post(url, forms);
        UnityWebRequestAsyncOperation handler = webRequest.SendWebRequest();

        float timeIn = 0f;

        if (!inBackground)
        {
            LoadingScreen.ActiveLoading(loadingFeedback);
        }
        while (!handler.isDone)
        {
            timeIn += Time.deltaTime;
            if (timeIn > timeOut)
            {
                //Security
                webRequest.Abort();
                if (!inBackground)
                {
                    LoadingScreen.ActiveLoading("TIME OUT");
                }
                yield return(new WaitForSeconds(2f));

                break;
            }
            yield return(null);
        }

        //FakeDelay
        float minTime = 1f;

        if (!inBackground && timeIn < minTime)
        {
            yield return(new WaitForSeconds(minTime - timeIn));
        }

        if (webRequest.isNetworkError || webRequest.isHttpError)
        {
            Debug.Log(webRequest.error);
            if (!inBackground)
            {
                LoadingScreen.ActiveLoading(webRequest.error, false, 1f);
            }
        }
        else
        {
            if (!inBackground)
            {
                LoadingScreen.StopLoading();
            }
            //Call end
            string      content = webRequest.downloadHandler.text;
            JsonRequest request = JsonUtility.FromJson <JsonRequest>(content);
            onRequestEnd(request);
        }

        yield break;
    }
Пример #8
0
    public void CreateNewSession(string nameSession, string masterSession, string ipSession, OnRequestEnd onRequestEnd)
    {
        string url = API + "NewSession.php";

        WWWForm forms = new WWWForm();

        forms.AddField("nameSessionPost", nameSession);
        forms.AddField("masterSessionPost", masterSession);
        forms.AddField("ipSessionPost", ipSession);

        if (coWebReq != null)
        {
            StopCoroutine(coWebReq);
        }
        coWebReq = StartCoroutine(RequestWeb(url, forms, 10f, "Create new session", onRequestEnd));
    }