diff options
Diffstat (limited to 'web/nms.gathering.org/speedometer/d3-master/test/XMLHttpRequest.js')
-rw-r--r-- | web/nms.gathering.org/speedometer/d3-master/test/XMLHttpRequest.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/web/nms.gathering.org/speedometer/d3-master/test/XMLHttpRequest.js b/web/nms.gathering.org/speedometer/d3-master/test/XMLHttpRequest.js new file mode 100644 index 0000000..21ee574 --- /dev/null +++ b/web/nms.gathering.org/speedometer/d3-master/test/XMLHttpRequest.js @@ -0,0 +1,60 @@ +var fs = require("fs"); + +global.XMLHttpRequest = function XMLHttpRequest() { + var self = this, + info = self._info = {}, + headers = {}, + url; + + // TODO handle file system errors? + +self.readyState = 0; + + self.open = function(m, u, a) { + info.url = u; + info.async = a; + self.readyState = 1; + self.send = a ? read : readSync; + }; + + self.setRequestHeader = function(n, v) { + if (/^Accept$/i.test(n)) info.mimeType = v.split(/,/g)[0]; + }; + + function read() { + self.readyState = 2; + fs.readFile(info.url, "binary", function(e, d) { + if (e) { + self.status = 404; // assumed + } else { + self.status = 200; + self.responseText = d; + self.responseXML = {_xml: d}; + headers["Content-Length"] = d.length; + } + self.readyState = 4; + XMLHttpRequest._last = self; + if (self.onreadystatechange) self.onreadystatechange(); + }); + } + + function readSync() { + self.readyState = 2; + try { + var d = fs.readFileSync(info.url, "binary"); + self.status = 200; + self.responseText = d; + self.responseXML = {_xml: d}; + headers["Content-Length"] = d.length; + } catch (e) { + self.status = 404; // assumed + } + self.readyState = 4; + XMLHttpRequest._last = self; + if (self.onreadystatechange) self.onreadystatechange(); + } + + self.getResponseHeader = function(n) { + return headers[n]; + }; +}; |