示例#1
0
        public void CreateLobby(Action <string> onSuccess)
        {
            var req = new RESTEasyRequest();

            req.Body(" ").Url(State.HTTP_HOST + "/api/v1/lobby").OnSuccess(onSuccess).OnFailure((s, i) => handleFailure(req, s, i));
            StartCoroutine(req.Post());
        }
示例#2
0
 private static void HandleFailure(UnityWebRequest req, RESTEasyRequest handler)
 {
     if (handler.failureBytes != null)
     {
         handler.failureBytes(req.downloadHandler.data);
     }
     else if (handler.failureString != null || handler.failureStringStatus != null || handler.failureResponse != null)
     {
         var bodyStr = req.downloadHandler.text;
         if (handler.failureString != null)
         {
             handler.failureString(bodyStr);
         }
         else if (handler.failureStringStatus != null)
         {
             handler.failureStringStatus(bodyStr, (int)req.responseCode);
         }
         else
         {
             handler.failureResponse(new RESTEasyResponse((int)req.responseCode, bodyStr, req.GetResponseHeaders(), req));
         }
     }
     else if (handler.failureEmpty != null)
     {
         handler.failureEmpty();
     }
 }
示例#3
0
        public void StartGame(string code, Action onSuccess)
        {
            var req  = new RESTEasyRequest();
            var body = new GameStartMessage();

            body.gameID = code;
            req.Body(JsonUtility.ToJson(body)).Url(State.HTTP_HOST + "/api/v1/lobby/" + code + "/start").OnSuccess(onSuccess).OnFailure((s, i) => handleFailure(req, s, i));
            StartCoroutine(req.Put());
        }
示例#4
0
        public void LeaveLobby(string code, string playerName, Action onSuccess)
        {
            var req  = new RESTEasyRequest();
            var body = new LobbyLeaveMessage();

            body.playerID = playerName;
            req.Body(JsonUtility.ToJson(body)).Url(State.HTTP_HOST + "/api/v1/lobby/" + code + "/leave").OnSuccess(onSuccess).OnFailure((s, i) => handleFailure(req, s, i));
            StartCoroutine(req.Put());
        }
示例#5
0
        public void GetGameState(string gameId, Action <CurrentStateMessage> onSuccess)
        {
            var req = new RESTEasyRequest();

            req.Url(State.HTTP_HOST + "/api/v1/game/" + gameId + "/turn/state").OnSuccess((resp, status) => {
                var msg = JsonUtility.FromJson <CurrentStateMessage>(resp);
                onSuccess(msg);
            }).OnFailure((s, i) => handleFailure(req, s, i));
            StartCoroutine(req.Get());
        }
示例#6
0
        public void SubmitTurn(string gameId, int turn, string playerName, int playerId, int[] cardIds, Action onSuccess)
        {
            var req  = new RESTEasyRequest();
            var body = new TurnSubmissionMessage();

            body.gameID   = gameId;
            body.playerID = playerName;
            for (int i = 0; i < cardIds.Length; i++)
            {
                var input = new GameInputMessage();
                input.order  = i;
                input.owner  = playerId;
                input.swap   = 0; // TODO: swap cards
                input.cardID = cardIds[i];
                body.inputs.Add(input);
            }
            Debug.Log(string.Format("Card submissions: {0}", body));
            req.Body(JsonUtility.ToJson(body)).Url(State.HTTP_HOST + "/api/v1/game/" + gameId + "/turn/" + playerName).OnSuccess(onSuccess).OnFailure((s, i) => handleFailure(req, s, i));
            StartCoroutine(req.Put());
        }
示例#7
0
        private static IEnumerator Get(RESTEasyRequest request)
        {
            var req = UnityWebRequest.Get(request.url);

            if (request.timeout > 0)
            {
                req.timeout = request.timeout;
            }
            request.headers.ForEach((header) => req.SetRequestHeader(header.key, header.value));
            using (req) {
                yield return(req.SendWebRequest());

                if (req.isNetworkError || req.isHttpError)
                {
                    HandleFailure(req, request);
                }
                else
                {
                    HandleSuccess(req, request);
                }
            }
        }
示例#8
0
        private static IEnumerator Put(RESTEasyRequest request)
        {
            var req = UnityWebRequest.Put(request.url, "empty");

            if (request.timeout > 0)
            {
                req.timeout = request.timeout;
            }
            req.uploadHandler = new UploadHandlerRaw(Encoding.ASCII.GetBytes(request.body));
            request.headers.ForEach((header) => req.SetRequestHeader(header.key, header.value));
            using (req) {
                yield return(req.SendWebRequest());

                if (req.isNetworkError || req.isHttpError)
                {
                    HandleFailure(req, request);
                }
                else
                {
                    HandleSuccess(req, request);
                }
            }
        }
示例#9
0
 private void handleFailure(RESTEasyRequest req, string error, int status)
 {
     Debug.LogError(string.Format("{2} ({0}): {1}", status, error, req.url));
 }