http.cat no longer uses Promise
This commit is contained in:
parent
ef55324f1a
commit
d0f2d465aa
50
lib/http.js
50
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();
|
||||
exports.cat = function (url, encoding_, headers_) {
|
||||
var encoding = 'utf8',
|
||||
headers = {},
|
||||
callback = null;
|
||||
|
||||
encoding = encoding || "utf8";
|
||||
// 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") {
|
||||
hasHost = true;
|
||||
break;
|
||||
}
|
||||
if (!hasHost) {
|
||||
headers["Host"] = url.hostname;
|
||||
for (var i in headers) {
|
||||
if (i.toLowerCase() === "host") {
|
||||
hasHost = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
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;
|
||||
};
|
||||
|
@ -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 {
|
||||
|
@ -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) {
|
||||
puts("got response");
|
||||
got_good_server_content = true;
|
||||
assert.equal(body, content);
|
||||
server.close();
|
||||
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 () {
|
||||
puts("got error (this should happen)");
|
||||
bad_server_got_error = true;
|
||||
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 () {
|
||||
|
@ -11,12 +11,8 @@ var server = http.createServer(function(req, res) {
|
||||
});
|
||||
server.listen(PORT);
|
||||
|
||||
http.cat("http://localhost:"+PORT+"/", "utf8")
|
||||
.addCallback(function (data) {
|
||||
assert.equal(UTF8_STRING, data);
|
||||
server.close();
|
||||
})
|
||||
.addErrback(function() {
|
||||
assert.ok(false, 'http.cat should succeed in < 1000ms');
|
||||
})
|
||||
.timeout(1000);
|
||||
http.cat("http://localhost:"+PORT+"/", "utf8", function (err, data) {
|
||||
if (err) throw err;
|
||||
assert.equal(UTF8_STRING, data);
|
||||
server.close();
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user