paypro: fix server hooking for self-signed paypro testing.

This commit is contained in:
Christopher Jeffrey 2014-07-31 11:00:22 -07:00 committed by Manuel Araoz
parent 2d12933112
commit 295f3a144a
1 changed files with 56 additions and 4 deletions

60
app.js
View File

@ -22,13 +22,65 @@ app.start = function(port, callback) {
cert: fs.readFileSync(bc + '/test/data/x509.crt')
});
var pserver = require(bc + '/examples/PayPro/server.js');
server.on('request', function(req, res) {
app(req, res);
pserver.app(res, res);
pserver.removeListener('request', pserver.app);
pserver.on('request', function(req, res) {
var statusCode = res.statusCode;
var headers = Object.keys(res._headers || {}).reduce(function(out, key) {
out[key] = res._headers[key];
return out;
}, {});
var headerNames = Object.keys(res._headerNames || {}).reduce(function(out, key) {
out[key] = res._headerNames[key];
return out;
}, {});
var writeHead = res.writeHead;
var write = res.write;
var end = res.end;
var status;
res.writeHead = function(s) {
status = s;
if (status > 400) {
return;
}
return writeHead.apply(this, arguments);
};
res.write = function() {
if (status && status > 400) {
return true;
}
return write.apply(this, arguments);
};
res.end = function() {
var self = this;
var args = Array.prototype.slice.call(arguments);
process.nextTick(function() {
self.statusCode = statusCode;
self._headers = headers;
self._headerNames = headerNames;
self.writeHead = writeHead;
self.write = write;
self.end = end;
if ((status || self.statusCode) > 400) {
return pserver.app(req, res);
}
return end.apply(self, args);
});
return true;
};
return app(req, res);
});
app.listen(port, function() {
pserver.listen(port, function() {
callback('https://localhost:' + port);
});
return;
}