Skip to content

Commit aed1f03

Browse files
committed
Use json as sync exchange format
This allows us to easily transmit headers too. I kind of tried to rebuild the node response object to reduce changes on any other code.
1 parent a8a8074 commit aed1f03

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/XMLHttpRequest.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -466,15 +466,15 @@ exports.XMLHttpRequest = function() {
466466
+ " responseText += chunk;"
467467
+ "});"
468468
+ "response.on('end', function() {"
469-
+ "fs.writeFileSync('" + contentFile + "', 'NODE-XMLHTTPREQUEST-STATUS:' + response.statusCode + ',' + responseText, 'utf8');"
469+
+ "fs.writeFileSync('" + contentFile + "', JSON.stringify({err: null, data: {statusCode: response.statusCode, headers: response.headers, text: responseText}}), 'utf8');"
470470
+ "fs.unlinkSync('" + syncFile + "');"
471471
+ "});"
472472
+ "response.on('error', function(error) {"
473-
+ "fs.writeFileSync('" + contentFile + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');"
473+
+ "fs.writeFileSync('" + contentFile + "', JSON.stringify({err: error}), 'utf8');"
474474
+ "fs.unlinkSync('" + syncFile + "');"
475475
+ "});"
476476
+ "}).on('error', function(error) {"
477-
+ "fs.writeFileSync('" + contentFile + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');"
477+
+ "fs.writeFileSync('" + contentFile + "', JSON.stringify({err: error}), 'utf8');"
478478
+ "fs.unlinkSync('" + syncFile + "');"
479479
+ "});"
480480
+ (data ? "req.write('" + data.replace(/'/g, "\\'") + "');":"")
@@ -485,19 +485,19 @@ exports.XMLHttpRequest = function() {
485485
while(fs.existsSync(syncFile)) {
486486
// Wait while the sync file is empty
487487
}
488-
self.responseText = fs.readFileSync(contentFile, 'utf8');
488+
var resp = JSON.parse(fs.readFileSync(contentFile, 'utf8'));
489489
// Kill the child process once the file has data
490490
syncProc.stdin.end();
491491
// Remove the temporary file
492492
fs.unlinkSync(contentFile);
493-
if (self.responseText.match(/^NODE-XMLHTTPREQUEST-ERROR:/)) {
494-
// If the file returned an error, handle it
495-
var errorObj = self.responseText.replace(/^NODE-XMLHTTPREQUEST-ERROR:/, "");
496-
self.handleError(errorObj);
493+
494+
console.log(self.responseText);
495+
if (resp.err) {
496+
self.handleError(resp.err);
497497
} else {
498-
// If the file returned okay, parse its data and move to the DONE state
499-
self.status = parseInt(self.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:([0-9]*),.*/, "$1"), 10);
500-
self.responseText = self.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:[0-9]*,(.*)/, "$1");
498+
response = resp.data;
499+
self.status = resp.data.statusCode;
500+
self.responseText = resp.data.text;
501501
setState(self.DONE);
502502
}
503503
}

0 commit comments

Comments
 (0)