public static IEnumerator delete(string url, string sessionToken, Action <bool, object> callback = null)
        {
            if (GamedoniaBackend.INSTANCE.debug)
            {
                String debugMsg = "[Api Call] - " + url;
                Debug.Log(debugMsg);
            }

            string  path    = _baseURL + "/" + _version + url;
            string  date    = GetCurrentDate();
            Request request = new Request("delete", path);

            if (!string.IsNullOrEmpty(sessionToken))
            {
                request.AddHeader(GD_SESSION_TOKEN, sessionToken);
            }
            request.AddHeader(GD_APIKEY, _apiKey);
            request.AddHeader("Date", date);
            request.AddHeader(GD_SIGNATURE, Sign(_apiKey, _secret, date, "DELETE", request.uri.AbsolutePath));

            request.Send();

            while (!request.isDone)
            {
                yield return(null);
            }

            if (request.response.status == 200)
            {
                if (GamedoniaBackend.INSTANCE.debug)
                {
                    Debug.Log("[Api Response][" + url + "] - " + request.response.status + " " + request.response.Text);
                }
                callback(true, request.response.Text);
            }
            else
            {
                printResponseLog(url, request.response);
                GDError error = GDError.buildError(request.response);
                GamedoniaBackend.INSTANCE.lastError = error;
                callback(false, request.response.message + ' ' + request.response.Text);
            }
        }
        public static GDError buildError(Response response)
        {
            GDError error = null;

            if (!String.IsNullOrEmpty(response.Text))
            {
                error = JsonMapper.ToObject <GDError>(response.Text);
                error.httpErrorCode = response.status;
                if (!String.IsNullOrEmpty(response.message))
                {
                    error.httpErrorMessage = response.message;
                }
            }
            else
            {
                error = new GDError();
                error.httpErrorCode = response.status;
            }

            return(error);
        }
Exemple #3
0
        public static GDError buildError(Response response)
        {
            GDError error = null;
            if (!String.IsNullOrEmpty (response.Text)) {
                error = JsonMapper.ToObject<GDError>(response.Text);
                error.httpErrorCode = response.status;
                if (!String.IsNullOrEmpty(response.message)) error.httpErrorMessage = response.message;

            } else {
                error = new GDError();
                error.httpErrorCode = response.status;
            }

            return error;
        }
        public static IEnumerator post(string url, string content, string auth = null, string sessionToken = null, string gameid = null, Action <bool, object> callback = null)
        {
            if (GamedoniaBackend.INSTANCE.debug)
            {
                String debugMsg = "[Api Call] - " + url;
                if (!String.IsNullOrEmpty(content))
                {
                    debugMsg += " " + content;
                }
                Debug.Log(debugMsg);
            }

            string path = _baseURL + "/" + _version + url;

            Request request = new Request("POST", path);

            request.AddHeader("Content-Type", _content_type);
            request.AddHeader(GD_APIKEY, _apiKey);

            if (!string.IsNullOrEmpty(auth))
            {
                request.AddHeader(GD_AUTH, auth);
            }
            if (!string.IsNullOrEmpty(sessionToken))
            {
                request.AddHeader(GD_SESSION_TOKEN, sessionToken);
            }
            if (!string.IsNullOrEmpty(gameid))
            {
                request.AddHeader(GD_GAMEID, gameid);
            }

            if (!string.IsNullOrEmpty(content))
            {
                //Sign data to post
                string date = GetCurrentDate();
                string hmac = Sign(_apiKey, _secret, Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(content)), _content_type, date, "POST", request.uri.AbsolutePath);

                request.AddHeader(GD_SIGNATURE, hmac);
                request.AddHeader("Date", date);
                request.bytes = Encoding.UTF8.GetBytes(content);
            }

            request.Send();

            while (!request.isDone)
            {
                yield return(null);
            }


            if (request.response.status == 200)
            {
                if (GamedoniaBackend.INSTANCE.debug)
                {
                    Debug.Log("[Api Response][" + url + "] - " + request.response.status + " " + request.response.Text);
                }
                callback(true, request.response.Text);
            }
            else
            {
                printResponseLog(url, request.response);
                GDError error = GDError.buildError(request.response);
                GamedoniaBackend.INSTANCE.lastError = error;
                callback(false, request.response.message);
            }
        }