mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
[api] Updated http-proxy to work with vows
This commit is contained in:
parent
30b68c1532
commit
ead7567db8
@ -45,14 +45,14 @@ exports.NodeProxy.prototype = {
|
||||
this.events = [];
|
||||
|
||||
this.onData = function () {
|
||||
self.events.push(["data"].concat(self.toArray(arguments)));
|
||||
self.events.push(['data'].concat(self.toArray(arguments)));
|
||||
};
|
||||
this.onEnd = function () {
|
||||
self.events.push(["end"].concat(self.toArray(arguments)));
|
||||
self.events.push(['end'].concat(self.toArray(arguments)));
|
||||
};
|
||||
|
||||
req.addListener("data", this.onData);
|
||||
req.addListener("end", this.onEnd);
|
||||
req.addListener('data', this.onData);
|
||||
req.addListener('end', this.onEnd);
|
||||
},
|
||||
|
||||
proxyRequest: function (server, port, req, res) {
|
||||
@ -67,45 +67,45 @@ exports.NodeProxy.prototype = {
|
||||
var reverse_proxy = c.request(req.method, req.url, req.headers);
|
||||
|
||||
// Add a listener for the connection timeout event
|
||||
reverse_proxy.connection.addListener('error', function(err) {
|
||||
reverse_proxy.connection.addListener('error', function (err) {
|
||||
res.writeHead(200, {'Content-Type': 'text/plain'});
|
||||
|
||||
if(req.method !== 'HEAD') {
|
||||
res.write('Not a HEAD request');
|
||||
res.write('An error has occurred: ' + sys.puts(JSON.stringify(err)));
|
||||
}
|
||||
|
||||
res.end();
|
||||
});
|
||||
|
||||
// Add a listener for the reverse_proxy response event
|
||||
reverse_proxy.addListener("response", function (response) {
|
||||
reverse_proxy.addListener('response', function (response) {
|
||||
// Set the response headers of the client response
|
||||
res.writeHead(response.statusCode, response.headers);
|
||||
|
||||
// Add event handler for the proxied response in chunks
|
||||
response.addListener("data", function (chunk) {
|
||||
response.addListener('data', function (chunk) {
|
||||
if(req.method !== 'HEAD') {
|
||||
res.write(chunk, 'binary');
|
||||
this.body += chunk;
|
||||
self.body += chunk;
|
||||
}
|
||||
});
|
||||
|
||||
// Add event listener for end of proxied response
|
||||
response.addListener("end", function () {
|
||||
response.addListener('end', function () {
|
||||
// Remark: Emit the end event for testability
|
||||
self.emitter.emit('end', null, self.body);
|
||||
|
||||
res.end();
|
||||
});
|
||||
});
|
||||
|
||||
// Chunk the client request body as chunks from the proxied request come in
|
||||
req.addListener("data", function (chunk) {
|
||||
req.addListener('data', function (chunk) {
|
||||
reverse_proxy.write(chunk, 'binary');
|
||||
})
|
||||
|
||||
// At the end of the client request, we are going to stop the proxied request
|
||||
req.addListener("end", function () {
|
||||
// Remark: Emit the end event for testability
|
||||
self.emitter.emit('something', self.body);
|
||||
|
||||
req.addListener('end', function () {
|
||||
reverse_proxy.end();
|
||||
});
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
|
||||
var vows = require('vows'),
|
||||
sys = require('sys'),
|
||||
eyes = require('eyes'),
|
||||
assert = require('assert'),
|
||||
http = require('http');
|
||||
|
||||
@ -19,7 +20,7 @@ var NodeProxy = require('node-proxy').NodeProxy;
|
||||
// Simple 'hello world' response for test purposes
|
||||
//
|
||||
var helloWorld = function(req, res) {
|
||||
res.sendHeader(200, {'Content-Type': 'text/plain'});
|
||||
res.writeHead(200, {'Content-Type': 'text/plain'});
|
||||
res.write('hello world')
|
||||
res.end();
|
||||
};
|
||||
@ -54,22 +55,20 @@ var startProxyTest = function () {
|
||||
return proxy;
|
||||
};
|
||||
|
||||
var proxy = startProxyTest();
|
||||
proxy.emitter.addListener('something', function (body) {
|
||||
sys.puts(body);
|
||||
})
|
||||
|
||||
/*vows.describe('node-proxy').addBatch({
|
||||
vows.describe('node-proxy').addBatch({
|
||||
"When an incoming request is proxied to the helloNode server" : {
|
||||
topic: function () {
|
||||
// Create the proxy and start listening
|
||||
var proxy = startProxyTest();
|
||||
proxy.emitter.addListener('end', this.callback);
|
||||
|
||||
var client = http.createClient(8080, '127.0.0.1');
|
||||
client.request('GET', '/');
|
||||
var request = client.request('GET', '/');
|
||||
request.end();
|
||||
},
|
||||
"it should received 'hello world'": function (num) {
|
||||
sys.puts('got callback');
|
||||
//assert.equal(body, 'hello world');
|
||||
"it should received 'hello world'": function (err, body) {
|
||||
assert.equal(body, 'hello world');
|
||||
}
|
||||
}
|
||||
}).export(module);*/
|
||||
}).export(module);
|
||||
Loading…
x
Reference in New Issue
Block a user