public ServerTransport(bool fileupload) { IsFileUpload = fileupload; if (fileupload) { Source = Native.API.base64_decode(Native.SuperGlobals.Post[Helper.FormTemplateJSONField]); } else { Source = Native.API.file_get_contents("php://input"); } Native.Log("json << stream"); Native.Log("reading json transport data..."); FileSystemInfo.WriteFile("json.in.log", Helper.Join("\t", Native.DateTime, Source, "\r\n"), true); Descriptor = JSON.Decode <MyTransportDescriptor <TType> >(Source); Native.Log("reading json transport data... complete! "); //Native.Log("reading json transport data... done"); //Native.Log("dump: " + Native.DumpToString(Descriptor)); }
public ClientTansport(string url, string query, bool fileupload) { Url = url + "?" + query; Descriptor = new MyTransportDescriptor <TType>(); Worker.Tick += new System.Action <Timer>(Worker_Tick); if (fileupload) { IHTMLElement template = Native.Document.getElementById(Helper.FormTemplateID); if (template == null) { throw new System.Exception("form template not found"); } Form = (IHTMLForm)template.cloneNode(false); Form.action = Url; Form.appendChild(new IHTMLElement()); FormHiddenChild.style.display = IStyle.DisplayEnum.none; Descriptor.Callback = Expando.GetUniqueID("callback"); Expando.ExportCallback <string>(Descriptor.Callback, Callback); ResetCallbackFrame(); } else { Request = new IXMLHttpRequest(); } }
private void GotResponse() { TimeElapsed = IDate.Now.getTime() - _timestart; Worker.Stop(); if (IsVerbose) { System.Console.WriteLine(" <= [" + this.Descriptor.Description + "] " + TimeElapsed + " ms, " + this.ResponseText.Length + " bytes"); System.Console.WriteLine("json: " + this.ResponseText); } Descriptor = null; try { Descriptor = Expando.FromJSONProtocolString(ResponseText).To <MyTransportDescriptor <TType> >(); } catch (System.Exception exc) { LastException = exc; //if (IsVerbose) //{ // Console.LogError("unable to spawn from json, " + exc.Message); // Console.LogError("stream -> " + ResponseText); //} } Helper.Invoke(Complete, this); //if (Complete != null) // Complete(this); }