Browse Source

http.cat no longer uses Promise

v0.7.4-release
Ryan Dahl 15 years ago
parent
commit
d0f2d465aa
  1. 46
      lib/http.js
  2. 8
      src/node.js
  3. 10
      test/mjsunit/test-http-cat.js
  4. 10
      test/mjsunit/test-http-chunked.js

46
lib/http.js

@ -552,22 +552,40 @@ process.http.Client.prototype.request = function (method, url, headers) {
};
exports.cat = function (url, encoding, headers) {
var promise = new events.Promise();
encoding = encoding || "utf8";
exports.cat = function (url, encoding_, headers_) {
var encoding = 'utf8',
headers = {},
callback = null;
// parse the arguments for the various options... very ugly
if (typeof(arguments[1]) == 'string') {
encoding = arguments[1];
if (typeof(arguments[2]) == 'object') {
headers = arguments[2];
if (typeof(arguments[3]) == 'function') callback = arguments[3];
} else {
if (typeof(arguments[2]) == 'function') callback = arguments[2];
}
} else {
// didn't specify encoding
if (typeof(arguments[1]) == 'object') {
headers = arguments[1];
callback = arguments[2];
} else {
callback = arguments[1];
}
}
var url = require("url").parse(url);
headers = headers || {};
var hasHost = false;
for (var i in headers) if (i.toLowerCase() === "host") {
for (var i in headers) {
if (i.toLowerCase() === "host") {
hasHost = true;
break;
}
if (!hasHost) {
headers["Host"] = url.hostname;
}
if (!hasHost) headers["Host"] = url.hostname;
var content = "";
@ -576,21 +594,21 @@ exports.cat = function (url, encoding, headers) {
req.addListener('response', function (res) {
if (res.statusCode < 200 || res.statusCode >= 300) {
promise.emitError(res.statusCode);
if (callback) callback(res.statusCode);
client.close();
return;
}
res.setBodyEncoding(encoding);
res.addListener('data', function (chunk) { content += chunk; });
res.addListener('end', function () {
promise.emitSuccess(content);
if (callback) callback(null, content);
});
});
client.addListener("error", function () {
promise.emitError();
client.addListener("error", function (err) {
// todo an error should actually be passed here...
if (callback) callback(new Error('Connection error'));
});
req.close();
return promise;
};

8
src/node.js

@ -976,13 +976,7 @@ function cat (id, callback) {
if (err) {
if (callback) callback(err);
} else {
http.cat(id)
.addCallback(function(content) {
if (callback) callback(null, content);
})
.addErrback(function(err) {
if (callback) callback(err);
});
http.cat(id, callback);
}
});
} else {

10
test/mjsunit/test-http-cat.js

@ -17,16 +17,22 @@ server.listen(PORT);
var got_good_server_content = false;
var bad_server_got_error = false;
http.cat("http://localhost:"+PORT+"/", "utf8").addCallback(function (content) {
http.cat("http://localhost:"+PORT+"/", "utf8", function (err, content) {
if (err) {
throw err;
} else {
puts("got response");
got_good_server_content = true;
assert.equal(body, content);
server.close();
}
});
http.cat("http://localhost:12312/", "utf8").addErrback(function () {
http.cat("http://localhost:12312/", "utf8", function (err, content) {
if (err) {
puts("got error (this should happen)");
bad_server_got_error = true;
}
});
process.addListener("exit", function () {

10
test/mjsunit/test-http-chunked.js

@ -11,12 +11,8 @@ var server = http.createServer(function(req, res) {
});
server.listen(PORT);
http.cat("http://localhost:"+PORT+"/", "utf8")
.addCallback(function (data) {
http.cat("http://localhost:"+PORT+"/", "utf8", function (err, data) {
if (err) throw err;
assert.equal(UTF8_STRING, data);
server.close();
})
.addErrback(function() {
assert.ok(false, 'http.cat should succeed in < 1000ms');
})
.timeout(1000);
})

Loading…
Cancel
Save