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); } }
// Query Access Token Coroutine IEnumerator QueryAccessToken(string name, string password) { // Populate HTML request HTTP.Request request = new HTTP.Request("POST", "http://api.stackmob.com/user/accessToken"); request.Text = string.Format("username={0}&password={1}&token_type=mac", name, password); // Add request headers request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddHeader("Accept", acceptHeader); request.AddHeader("X-StackMob-API-Key", apiKey); request.AddHeader("X-StackMob-User-Agent", "StackMob Platform"); // Send request request.Send(); // Yield coroutine until request returns while (!request.isDone) { yield return(null); } // Dump request response to debug console Debug.Log(request.response.Text); // Parse JSON object Hashtable table = JSON.JsonDecode(request.response.Text) as Hashtable; // Store Mac Key & Access Token accessToken = GetString("access_token", table); macKey = GetString("mac_key", table); // Query a schema with permissions enabled (ie. Allow any logged in user) StartCoroutine(Query("GET", "http://api.mob1.stackmob.com/safe")); }
public HTTP.Request Request(string method, string path, object payLoad) { var url = baseURL + path; var r = new HTTP.Request (method, url); r.AddHeader ("X-Parse-Application-Id", applicationId); r.AddHeader ("X-Parse-REST-API-Key", RESTAPIKey); if(sessionToken != null) r.AddHeader ("X-Parse-Session-Token", sessionToken); r.AddHeader ("Content-Type", "application/json"); if(payLoad != null) r.Text = JSON.JsonEncode (payLoad); return r; }
public void RegisterPoints(Vector3[] points) { int counter = 0; string flow = "["; for(int i = 0; i < points.Length; i++) { if(counter != 0) flow += ","; flow += points[i].x + "," + points[i].y + "," + points[i].z; counter++; if(counter >= MAX_POINTS_PER_REQUEST) { flow += "]"; byte[] input = Encoding.UTF8.GetBytes(flow); HTTP.Request someRequest = new HTTP.Request( "post", url + "/points", input ); someRequest.AddHeader("Content-Type", "application/json"); someRequest.Send( ( request ) => { // LOGGER Debug.Log( request.response.Text ); }); flow = "["; counter = 0; } } // TODO regiser last batch of points flow += "]"; }
public HTTP.Request Request(string method, string path, object payLoad) { var url = baseURL + path; var r = new HTTP.Request(method, url); r.AddHeader("X-Parse-Application-Id", applicationId); r.AddHeader("X-Parse-REST-API-Key", RESTAPIKey); if (sessionToken != null) { r.AddHeader("X-Parse-Session-Token", sessionToken); } r.AddHeader("Content-Type", "application/json"); if (payLoad != null) { r.Text = JSON.JsonEncode(payLoad); } return(r); }
// General Query Coroutine IEnumerator Query(string method, string url) { // Populate HTML request HTTP.Request request = new HTTP.Request(method, url); // Add request headers request.AddHeader("Accept", acceptHeader); request.AddHeader("X-StackMob-API-Key", apiKey); request.AddHeader("X-StackMob-User-Agent", "StackMob Platform"); request.AddHeader("Authorization", GenerateAuthorizationHeader(method, url)); // Send request request.Send(); // Yield coroutine until request returns while (!request.isDone) { yield return(null); } // Dump request response to debug console Debug.Log(request.response.Text); }
public void Connect(Uri uri) { isDone = false; connected = false; //var host = uri.Host + (uri.Port == 80 ? "" : ":" + uri.Port.ToString ()); var req = new Request("GET", uri.ToString()); req.SetHeader("Upgrade", "websocket"); req.SetHeader("Connection", "Upgrade"); var key = WebSocketKey(); req.SetHeader("Sec-WebSocket-Key", key); req.AddHeader("Sec-WebSocket-Protocol", "chat, superchat"); req.SetHeader("Sec-WebSocket-Version", "13"); req.SetHeader("Origin", "null"); req.acceptGzip = false; req.Send((Response obj) => { if (obj.GetHeader("Upgrade").ToLower() == "websocket" && obj.GetHeader("Connection").ToLower() == "upgrade") { var receivedKey = obj.GetHeader("Sec-Websocket-Accept").ToLower(); var sha = System.Security.Cryptography.SHA1.Create(); sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")); var computedKey = System.Convert.ToBase64String(sha.Hash).ToLower(); if (computedKey == receivedKey) { //good to go connected = true; connection = req.upgradedConnection; outgoingWorkerThread = new Thread(OutgoingWorker); outgoingWorkerThread.Start(); incomingWorkerThread = new Thread(IncomingWorker); incomingWorkerThread.Start(); SimpleWWW.Instance.StartCoroutine(Dispatcher()); SimpleWWW.Instance.OnQuit(() => { Close(CloseEventCode.CloseEventCodeNotSpecified, "Quit"); req.upgradedConnection.client.Close(); }); } else { //invalid connected = false; } } isDone = true; }); }
public void RegisterSphere(int id, Vector3 center, float radius) { string inputStr = "[{\"id\":" + id + ", " + "\"center\": {" + "\"x\":" + center.x + ", " + "\"y\":" + center.y + ", " + "\"z\":" + center.z + "}, " + "\"radius\":" + radius + "}]"; // LOGGER Debug.Log (inputStr); byte[] input = Encoding.UTF8.GetBytes(inputStr); HTTP.Request request = new HTTP.Request( "post", url + "/spheres", input ); request.AddHeader("Content-Type", "application/json"); request.Send( ( req ) => { // LOGGER Debug.Log( req.response.Text ); }); }
public static IEnumerator put(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("PUT",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, "PUT", 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); } }
public static IEnumerator PostJoinWorld( int worldId, string playerClass ) { HTTP.Request request = new HTTP.Request( "Post", string.Format("{0}/worlds/{1}/players.json", urlServer, worldId) ); request.AddHeader( "type", playerClass ); request.AddParameters( WebRequests.authenticatedGodModeParameters ); request.Send(); while( !request.isDone ) { yield return 0; } }