From fdf388dc8a5f1931dc8ced71dcab67ca98f89f4d Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Tue, 29 May 2012 09:17:32 +0800 Subject: [PATCH] sync changes --- XMLHttpRequest.js | 145 +++++++++++++++++++++++++++++++++++++++++++ tests/soup.js | 155 ++++++++-------------------------------------- 2 files changed, 172 insertions(+), 128 deletions(-) create mode 100644 XMLHttpRequest.js diff --git a/XMLHttpRequest.js b/XMLHttpRequest.js new file mode 100644 index 00000000..1f46ad2a --- /dev/null +++ b/XMLHttpRequest.js @@ -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 () + { + + } + + +}; diff --git a/tests/soup.js b/tests/soup.js index 41e2bdc2..50eb2d1a 100644 --- a/tests/soup.js +++ b/tests/soup.js @@ -1,145 +1,44 @@ #!/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) { +// +//} +//) -- 2.39.2