sync changes
[gitlive] / XMLHttpRequest.js
1 XObject = imports.XObject.XObject;
2
3 Soup = imports.gi.Soup;
4
5 var XMLHttpRequest = function (cfg) {
6     if (typeof(cfg) == 'object') {
7         for(var i in cfg) {
8             this[i] = cfg[i];
9         }
10     }
11     
12 }
13
14 XMLHttpRequest.prototype = { 
15     // event handlers
16     //onreadystatechange;
17     //onloadstart;
18     //onprogress;
19     //onabort;
20     //onerror;
21     //onload;
22     //ontimeout;
23     //onloadend;
24     
25     timeout : 0,
26     withCredentials : false,
27     
28     // states
29     UNSENT : 0,
30     OPENED : 1,
31     HEADERS_RECEIVED : 2,
32     LOADING : 3,
33     DONE : 4,
34     
35     // readonly..
36     readyState : 0,
37     upload: null,
38     
39     
40     _message : false,
41     _session : false,
42     _async   : false,
43     
44     // request
45      open : function ( method,  url, async, user, password)
46     {
47         async = async || false;
48         user = user || false;
49         password = password || false;
50         
51         this._session = async ?  new Soup.SessionAsync() : new Soup.SessionSync();
52
53         var uri = new Soup.URI.c_new(url);
54         this._message = new Soup.Message({method: method, uri:uri});
55         this._async = async;
56
57         if (user || password) {
58             user = user || '';
59             password = password || '';
60             var auth = new Soup.Auth.c_new(
61                     Soup.AuthBasic.type,
62                     this._message,
63                     "Basic realm=\"Test\"");
64  
65             
66
67             auth.authenticate(user,password);
68             var authmsg = auth.get_authorization(this._message);
69             //print(authmsg);
70             this._message.request_headers.append(
71                 'Authorization', authmsg);
72         }
73
74         
75         
76     },
77     
78     setRequestHeader : function ( header,  value)
79     {
80         _this.message.request_headers.append(headers, value)
81
82     },
83     overrideMimeType : function ( mime)
84     {
85         
86     },
87     send  : function(data)
88     {
89         data = data|| false;
90         if (data) {
91             this._message.set_request('application/x-www-form-urlencoded', Soup.MemoryUse.COPY, data, data.length)
92         }
93         var _t = this;
94         if (this._async) {
95             this._session.queue_message(this._message, function(ses, msg) {
96                 // doc's say we get here after we have sent the data..
97                 
98                 //print("got queue callback");
99                 //_t._session.unpause_message(this._message);
100                 _t.responseText = _t._message.response_body.data;
101                 _t.status = 4;
102             
103                 if (_t.onreadystatechange) {
104                     _t.onreadystatechange();
105                 }
106                 
107                 
108             });
109             return false;
110             
111         }
112         var status = this._session.send_message(this._message);
113         this.responseText = this._message.response_body.data;
114         this.status = 4;
115         if (_t.onreadystatechange) {
116             _t.onreadystatechange();
117         }
118         return status;
119
120     },
121     abort : function()
122     {
123         
124     },
125     
126     // response (all readonly...)
127     status : false,
128     statusText : false,
129     //readonly attribute any response
130     responseText : false,
131     responseXML : false,
132     responseType : false, 
133     
134     // response - read
135     getResponseHeader : function(  header)
136     {
137         
138     },
139     getAllResponseHeaders : function ()
140     {
141         
142     }
143    
144     
145 };