Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
node-http-proxy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
node-http-proxy
Commits
ead7567d
Commit
ead7567d
authored
Jul 24, 2010
by
indexzero
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[api] Updated http-proxy to work with vows
parent
30b68c15
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
26 deletions
+25
-26
lib/node-proxy.js
lib/node-proxy.js
+15
-15
test/node-proxy-test.js
test/node-proxy-test.js
+10
-11
No files found.
lib/node-proxy.js
View file @
ead7567d
...
...
@@ -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
();
});
...
...
test/node-proxy-test.js
View file @
ead7567d
...
...
@@ -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);*/
\ No newline at end of file
}).
export
(
module
);
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment