toolkit/javascript/d3/test/env-xhr.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     1 var fs = require("fs");
       
     2 
       
     3 XMLHttpRequest = function() {
       
     4   var self = this,
       
     5       info = self._info = {},
       
     6       headers = {},
       
     7       url;
       
     8 
       
     9   // TODO handle file system errors?
       
    10 
       
    11   self.open = function(m, u, a) {
       
    12     info.url = u;
       
    13     info.async = a;
       
    14     Object.freeze(info);
       
    15     self.send = a ? read : readSync;
       
    16   };
       
    17 
       
    18   self.overrideMimeType = function(x) {
       
    19     info.mimeType = x;
       
    20   };
       
    21 
       
    22   function read() {
       
    23     fs.readFile(info.url, "binary", function(e, d) {
       
    24       if (e) {
       
    25         self.status = 404; // assumed
       
    26       } else {
       
    27         self.status = 200;
       
    28         self.responseText = d;
       
    29         self.responseXML = {_xml: d};
       
    30         headers["Content-Length"] = d.length;
       
    31       }
       
    32       self.readyState = 4;
       
    33       XMLHttpRequest._last = self;
       
    34       if (self.onreadystatechange) self.onreadystatechange();
       
    35     });
       
    36   }
       
    37 
       
    38   function readSync() {
       
    39     try {
       
    40       var d = fs.readFileSync(info.url, "binary");
       
    41       self.status = 200;
       
    42       self.responseText = d;
       
    43       self.responseXML = {_xml: d};
       
    44       headers["Content-Length"] = d.length;
       
    45     } catch (e) {
       
    46       self.status = 404; // assumed
       
    47     }
       
    48     self.readyState = 4;
       
    49     XMLHttpRequest._last = self;
       
    50     if (self.onreadystatechange) self.onreadystatechange();
       
    51   }
       
    52 
       
    53   self.getResponseHeader = function(n) {
       
    54     return headers[n];
       
    55   };
       
    56 };