Fixes & method for response stream parsing as text

This commit is contained in:
2015-08-20 22:50:21 +02:00
parent 7a0962c50b
commit d274ba3f96

View File

@@ -95,20 +95,20 @@ var CookieJar = function () {
}; };
module.exports.HttpClient = function Browser (_baseUrl, _headers) { module.exports = function Browser (_parameters) {
var baseUrl = null; var baseUrl = null;
var instance = this; var instance = this;
//CookieJar and custom headers //CookieJar and custom headers
var cookieJar = new CookieJar(); var cookieJar = new CookieJar();
this.headers = {}; this.headers = {};
if (_baseUrl) { if (_baseUrl) {
baseUrl = url.parse(_baseUrl); baseUrl = url.parse(_parameters.baseUrl);
} }
if (_headers) { if (_headers) {
this.headers = _headers; this.headers = _parameters.headers;
} }
if (this.headers["User-Agent"] === undefined) { if (this.headers["User-Agent"] === undefined) {
@@ -228,7 +228,7 @@ module.exports.HttpClient = function Browser (_baseUrl, _headers) {
pathUrl.method = _request.method; pathUrl.method = _request.method;
var request = protocol.request(pathUrl, function(response) { var request = protocol.request(pathUrl, function(response) {
if (response.statusCode < 300) { if (response.statusCode < 300 || (response.statusCode < 400 && !_parameters.redirect)) {
if (response.headers["set-cookie"]) { if (response.headers["set-cookie"]) {
for (let i = 0 ; i < response.headers["set-cookie"].length ; ++i) { for (let i = 0 ; i < response.headers["set-cookie"].length ; ++i) {
cookieJar.update(response.headers["set-cookie"][i]); cookieJar.update(response.headers["set-cookie"][i]);
@@ -249,9 +249,9 @@ module.exports.HttpClient = function Browser (_baseUrl, _headers) {
decoder = response; decoder = response;
} }
fulfill(decoder); fulfill(response, decoder);
} }
else if (response.statusCode < 400) { else if (response.statusCode < 400 && _parameters.redirect) {
instance.get(response.headers.location) instance.get(response.headers.location)
.then(fulfill) .then(fulfill)
.catch(reject); .catch(reject);
@@ -281,3 +281,21 @@ module.exports.HttpClient = function Browser (_baseUrl, _headers) {
}); });
} }
}; };
module.exports.readPage = function (data) {
return new Promise( function ( fulfill, reject) {
var page = "";
data.on("data", function (text) {
page += text;
});
data.on("end", function () {
fulfill(page);
});
data.on("error", function (error) {
reject(error);
});
});
};