sync changes
authorAlan Knowles <alan@roojs.com>
Tue, 29 May 2012 01:17:32 +0000 (09:17 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 29 May 2012 01:17:32 +0000 (09:17 +0800)
XMLHttpRequest.js [new file with mode: 0644]
tests/soup.js

diff --git a/XMLHttpRequest.js b/XMLHttpRequest.js
new file mode 100644 (file)
index 0000000..1f46ad2
--- /dev/null
@@ -0,0 +1,145 @@
+XObject = imports.XObject.XObject;
+
+Soup = imports.gi.Soup;
+
+var XMLHttpRequest = function (cfg) {
+    if (typeof(cfg) == 'object') {
+        for(var i in cfg) {
+            this[i] = cfg[i];
+        }
+    }
+    
+}
+
+XMLHttpRequest.prototype = { 
+    // event handlers
+    //onreadystatechange;
+    //onloadstart;
+    //onprogress;
+    //onabort;
+    //onerror;
+    //onload;
+    //ontimeout;
+    //onloadend;
+    
+    timeout : 0,
+    withCredentials : false,
+    
+    // states
+    UNSENT : 0,
+    OPENED : 1,
+    HEADERS_RECEIVED : 2,
+    LOADING : 3,
+    DONE : 4,
+    
+    // readonly..
+    readyState : 0,
+    upload: null,
+    
+    
+    _message : false,
+    _session : false,
+    _async   : false,
+    
+    // request
+     open : function ( method,  url, async, user, password)
+    {
+        async = async || false;
+        user = user || false;
+        password = password || false;
+        
+        this._session = async ?  new Soup.SessionAsync() : new Soup.SessionSync();
+
+        var uri = new Soup.URI.c_new(url);
+        this._message = new Soup.Message({method: method, uri:uri});
+        this._async = async;
+
+        if (user || password) {
+            user = user || '';
+            password = password || '';
+            var auth = new Soup.Auth.c_new(
+                    Soup.AuthBasic.type,
+                    this._message,
+                    "Basic realm=\"Test\"");
+            
+
+            auth.authenticate(user,password);
+            var authmsg = auth.get_authorization(this._message);
+            //print(authmsg);
+            this._message.request_headers.append(
+                'Authorization', authmsg);
+        }
+
+        
+        
+    },
+    
+    setRequestHeader : function ( header,  value)
+    {
+        _this.message.request_headers.append(headers, value)
+
+    },
+    overrideMimeType : function ( mime)
+    {
+        
+    },
+    send  : function(data)
+    {
+        data = data|| false;
+        if (data) {
+            this._message.set_request('application/x-www-form-urlencoded', Soup.MemoryUse.COPY, data, data.length)
+        }
+        var _t = this;
+        if (this._async) {
+            this._session.queue_message(this._message, function(ses, msg) {
+                // doc's say we get here after we have sent the data..
+                
+                //print("got queue callback");
+                //_t._session.unpause_message(this._message);
+                _t.responseText = _t._message.response_body.data;
+                _t.status = 4;
+            
+                if (_t.onreadystatechange) {
+                    _t.onreadystatechange();
+                }
+                
+                
+            });
+            return false;
+            
+        }
+        var status = this._session.send_message(this._message);
+        this.responseText = this._message.response_body.data;
+        this.status = 4;
+        if (_t.onreadystatechange) {
+            _t.onreadystatechange();
+        }
+        return status;
+
+    },
+    abort : function()
+    {
+        
+    },
+    
+    // response (all readonly...)
+    status : false,
+    statusText : false,
+    //readonly attribute any response
+    responseText : false,
+    responseXML : false,
+    responseType : false, 
+    
+    // response - read
+    getResponseHeader : function(  header)
+    {
+        
+    },
+    getAllResponseHeaders : function ()
+    {
+        
+    }
+   
+    
+};
index 41e2bdc..50eb2d1 100644 (file)
 #!/usr/bin/env seed
-
-Soup = imports.gi.Soup;
+XMLHttpRequest = imports['../XMLHttpRequest.js'].XMLHttpRequest;
 Netrc = imports['../Netrc.js'].Netrc;
-
-GLib = imports.gi.GLib;
-
-var session = new Soup.SessionSync();
 File  = imports['../File.js'].File;
+Gtk      = imports.gi.Gtk;
 
-// Soup.URI is a struct.
-var uri = new Soup.URI.c_new("http://www.roojs.com/admin.php/Roo/Events");
-//var uri = new Soup.URI.c_new("http://www.roojs.com/head.php");
-
-var msg = new Soup.Message({method:"POST", uri:uri});
-//var msg = new Soup.Message({method:"GET", uri:uri});
-
-// post..
-buftxt =  "remarks=test";
-msg.set_request('application/x-www-form-urlencoded', Soup.MemoryUse.COPY, buftxt, buftxt.length)
+Gtk.init (null, null);
 
+// sa
 
-var auth = new Soup.Auth.c_new(Soup.AuthBasic.type, msg, "Basic realm=\"Test\"");
  
 var authvals = Netrc.forHost('git.roojs.com');
 
-auth.authenticate(authvals.login ,authvals.password);
-var authmsg = auth.get_authorization(msg);
-//print(authmsg);
-msg.request_headers.append('Authorization', authmsg)
-
-//request.headers_append...
-var status = session.send_message(msg);
-// session.queue_message(function(ses, msg) {
-//
-//}
-//)
-print(status);
-
-print(msg.response_body.data);
-
 
-function XMLHttpRequest() {
-    
-    
-}
+//print(JSON.stringify(imports['../XMLHttpRequest.js'], null,4));
 
-XObject.extend(XMLHttpRequest,{ 
-    // event handlers
-    //onreadystatechange;
-    //onloadstart;
-    //onprogress;
-    //onabort;
-    //onerror;
-    //onload;
-    //ontimeout;
-    //onloadend;
-    
-    timeout : 0,
-    withCredentials : false,
-    
-    // states
-    UNSENT : 0,
-    OPENED : 1,
-    HEADERS_RECEIVED : 2,
-    LOADING : 3,
-    DONE : 4,
-    
-    // readonly..
-    readyState : 0,
-    upload: null,
-    
-    
-    _message : false,
-    _session : false,
-    _async   : false,
-    
-    // request
-    open : function ( method,  url, async, user, password)
+var x = new XMLHttpRequest({
+    onreadystatechange : function()
     {
-        async = async || false;
-        user = user || false;
-        password = password || false;
+        print("GOT " + x.responseText);
         
-        this._session = async ?  new Soup.SessionAsync() : new Soup.SessionSync();
-
-        var uri = new Soup.URI.c_new(url);
-        this._message = new Soup.Message({method: method, uri:uri});
-        this._async = async;
-
-        
-    },
-    
-    setRequestHeader : function ( header,  value)
-    {
-        _this.message.request_headers.append(headers, value)
-
-    },
-    overrideMimeType : function ( mime)
-    {
-        
-    },
-    send  : function(data)
-    {
-        this._message.set_request('application/x-www-form-urlencoded', Soup.MemoryUse.COPY, data, data.length)
-        
-        if (this._async) {
-            this._session.queue_message(this._message, function() {
-                // got some data... fire some evetns.
-            })
-            
-        }
-        var status = this._session.send_message(this._message);
-        this.responseText = msg.response_body.data;
-        this.status = 4;
-        return status;
-
-    },
-    abort : function()
-    {
-        
-    },
-    
-    // response (all readonly...)
-    status : false,
-    statusText : false,
-    //readonly attribute any response
-    responseText : false,
-    responseXML : false,
-    responseType : false, 
-    
-    // response - read
-    getResponseHeader : function(  header)
-    {
-        
-    },
-    getAllResponseHeaders : function ()
-    {
         
     }
-   
+    
     
 });
+print(JSON.stringify(x));
+
+//"http://www.roojs.com/admin.php/Roo/Events" POST
+x.open("GET", "http://www.roojs.com/admin.php/Roo/Events?limit=3", true, authvals.login ,authvals.password)
+//buftxt =  "remarks=test";
+
+
+x.send();
+Gtk.main();
+//var msg = new Soup.Message({method:"GET", uri:uri});
+
+// post..
+// session.queue_message(function(ses, msg) {
+//
+//}
+//)