protected override void ValidateResponse(KnetikRequest req)
        {
            base.ValidateResponse(req);

            if (Status != StatusType.Success) {
                return;
            }

            KnetikJSONNode result = Body ["result"];
            if (result == null || result.Value == "null") {
                Debug.LogError("Knetik Labs SDK - ERROR 304: Existing User could not be successfully logged in, server has no response!");
                Debug.LogError("Knetik Labs SDK: JSON Request: " + req);
                ErrorMessage = "Connection error - No server response";
                Status = StatusType.Error;
            }
            KnetikJSONNode session = result ["session"];
            if (session == null || session.Value == "null") {
                Debug.LogError("Knetik Labs SDK - ERROR 305: Existing User could not be successfully logged in, server did not return a session!");
                Debug.LogError("Knetik Labs SDK: JSON Request: " + req);
                Debug.LogError("Body: " + Body);
                ErrorMessage = "Connection error - Invalid session";
                Status = StatusType.Error;
            }

            Debug.Log ("Existing User successfully logged in.");
            Client.Session = session;

            if (result["user_id"] == null || result["user_id"].Value == "null") {
                Debug.Log ("Guest Session has been established.");
            } else {
                Debug.Log ("Authenticated Session has been established. (" + result["user_id"] + ")");
                Client.UserID = result["user_id"].AsInt;
            }
        }
        public KnetikApiResponse(KnetikClient client, KnetikRequest req, Action<KnetikApiResponse> callback = null)
        {
            Status = StatusType.Pending;
            Client = client;
            Request = req;
            Callback = callback;

            if (callback == null) {
                req.synchronous = true;
                req.Send();
                CompleteCallback (req);
            } else {
                req.Send(CompleteCallback);
            }
        }
        protected override void ValidateResponse(KnetikRequest req)
        {
            base.ValidateResponse(req);

            if (Status != StatusType.Success) {
                return;
            }

            KnetikJSONNode accessToken = Body ["access_token"];
            if (accessToken == null || accessToken.Value == "null") {
                Debug.LogError("Knetik Labs SDK - ERROR 304: Existing User could not be successfully logged in, server has no response!");
                Debug.LogError("Knetik Labs SDK: JSON Request: " + req);
                ErrorMessage = "Connection error - Invalid access token";
                Status = StatusType.Error;
            }

            Debug.Log ("Existing User successfully logged in.");
            Client.AccessToken = accessToken.Value;

            KnetikJSONNode refreshToken = Body ["refresh_token"];
            if (refreshToken == null || refreshToken.Value == "null") {
                ErrorMessage = "Connection error - Invalid refresh token";
                Status = StatusType.Error;
            }
            else
            {
                Debug.Log ("Refresh Token Set.");
                DateTime expirationDate = DateTime.Now;

                int secondsLeft = Body["expires_in"].AsInt;
                Debug.Log("expires in "+secondsLeft);

                expirationDate = expirationDate.AddSeconds(secondsLeft);
                Debug.Log("expires at "+expirationDate);

                Client.ExpirationDate = expirationDate;
                Client.RefreshToken = refreshToken.Value;
            }
            //            if (result["user_id"] == null || result["user_id"].Value == "null") {
            //				Debug.Log ("Guest Session has been established.");
            //			} else {
            //				Debug.Log ("Authenticated Session has been established. (" + result["user_id"] + ")");
            //				Client.UserID = result["user_id"].AsInt;
            //			}
        }
 public KnetikLoginResponse(KnetikClient client, KnetikRequest req, Action<KnetikApiResponse> cb = null)
     : base(client, req, cb)
 {
 }
Beispiel #5
0
        protected KnetikRequest CreateRequest(string path, string body = "[]", string method = "post", int timestamp = -1, string serviceBundle = null, bool isForm = false)
        {
            if (timestamp == -1) {
                TimeSpan t = (DateTime.UtcNow - new DateTime (1970, 1, 1));
                timestamp = (int)t.TotalSeconds;
            }

            string url = BuildUrl (path, serviceBundle);

            System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding();
            byte[] data = encoding.GetBytes(body);

            KnetikRequest req = new KnetikRequest (method, url, data);

            if (isForm) {
                req.SetHeader("Content-type", "application/x-www-form-urlencoded");
            } else {
                req.SetHeader("Content-type", "application/json");
                req.SetHeader("Accept", "application/json");
            }
            req.SetHeader("User-Agent", "Knetik Unity SDK");

            if (AccessToken != null && AccessToken != "")
            {
                req.SetHeader("Authorization", "Bearer " + AccessToken);
            }

            return req;
        }
        private void CompleteCallback(KnetikRequest req)
        {
            if (req.response != null) {
                Log ("Body:\n" + req.response.Text);
                ValidateResponse (req);
            } else {
                Status = StatusType.Failure;
                ErrorMessage = "Connection error - Could not connect to host";
            }

            if (Callback != null) {
                Callback(this);
            }
        }
        protected virtual void ValidateResponse(KnetikRequest req)
        {
            Status = StatusType.Success;
            if (req.response == null) {
                Log("Knetik Labs SDK - ERROR 1: The response from SAPI is null.");
                                Status = StatusType.Failure;
                                ErrorMessage = "Connection error - No connection";
                return;
            }

            if (req.response.status < 200 || req.response.status >= 300) {
                try {
                Body = KnetikJSON.Parse(req.response.Text);

                if (Body["error"] != null && ((Body["error"]["success"] == null) || (Body["error"]["success"].AsBool == false))) {
                    LogError("Knetik Labs SDK - ERROR 5: Response JSON does NOT report success!");
                    Status = StatusType.Error;
                    ErrorMessage = Body["message"];

                    }else{

                        Status = StatusType.Failure;
                        ErrorMessage = "Connection Error - Server problem";
                    }
                } catch(Exception e) {
                        LogException(e);
                        Status = StatusType.Failure;
                        ErrorMessage = "Connection error - Unknown exception";
                        return;
                }
                return;
            }

            try {
                Body = KnetikJSON.Parse(req.response.Text);

                if (Body == null && ( req.response.status < 200 || req.response.status > 300 ))
                {
                    LogError("Knetik Labs SDK - ERROR 3: Failed to Properly Parse JSON response");
                                        Status = StatusType.Failure;
                                        ErrorMessage = "Connection error - Invalid format";
                    return;
                }
            } catch(Exception e) {
                LogException(e);
                Status = StatusType.Failure;
                ErrorMessage = "Connection error - Unknown exception";
                return;
            }
        }
Beispiel #8
0
        protected KnetikRequest CreateRequest(string path, string body = "[]", string method = "post", int timestamp = -1, string serviceBundle = null)
        {
            if (timestamp == -1) {
                TimeSpan t = (DateTime.UtcNow - new DateTime (1970, 1, 1));
                timestamp = (int)t.TotalSeconds;
            }

            string url = BuildUrl (path, serviceBundle);

            string signature = BuildSignature (body, timestamp);
            string envelope = BuildEnvelope (body, timestamp, signature);

            Log ("URL: " + url);
            Log ("Envelope:\n" + envelope);

            System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding();
            byte[] data = encoding.GetBytes(envelope);

            KnetikRequest req = new KnetikRequest (method, url, data);

            req.SetHeader("Content-type", "application/json");
            req.SetHeader("User-Agent", "Knetik Unity SDK");

            return req;
        }
        protected virtual void ValidateResponse(KnetikRequest req)
        {
            Status = StatusType.Success;
            if (req.response == null) {
                Log("Knetik Labs SDK - ERROR 1: The response from SAPI is null.");
                                Status = StatusType.Failure;
                                ErrorMessage = "Connection error - No connection";
                return;
            }

            if (req.response.status != 200) {
                LogError("Knetik Labs SDK - ERROR 2: Response returned a status of " + req.response.status);
                                Status = StatusType.Failure;
                                ErrorMessage = "Connection Error - Server problem";
                return;
            }

            try {
                Body = KnetikJSON.Parse(req.response.Text);

                if (Body == null) {
                    LogError("Knetik Labs SDK - ERROR 3: Failed to Properly Parse JSON response");
                                        Status = StatusType.Failure;
                                        ErrorMessage = "Connection error - Invalid format";
                    return;
                }
            } catch(Exception e) {
                LogException(e);
                                Status = StatusType.Failure;
                                ErrorMessage = "Connection error - Unknown exception";
                return;
            }

            if (Body["error"] == null) {
                LogError("Knetik Labs SDK - ERROR 4: JSON Response does NOT contain an error node!");
                Status = StatusType.Failure;
                                ErrorMessage = "Connection error - Malformed response";
                return;
            }

            KnetikJSONNode error = Body["error"];

            if ((error["success"] == null) || (error["success"].AsBool == false)) {
                LogError("Knetik Labs SDK - ERROR 5: Response JSON does NOT report success!");
                Status = StatusType.Error;
                                ErrorMessage = Body["message"];
                return;
            }
        }