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