From d274ba3f96ad6b6e8e51e8d215a634765369e1d2 Mon Sep 17 00:00:00 2001 From: boudin Date: Thu, 20 Aug 2015 22:50:21 +0200 Subject: [PATCH] Fixes & method for response stream parsing as text --- lib/httpclient.js | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/httpclient.js b/lib/httpclient.js index 97dc0a7..627096a 100644 --- a/lib/httpclient.js +++ b/lib/httpclient.js @@ -95,20 +95,20 @@ var CookieJar = function () { }; -module.exports.HttpClient = function Browser (_baseUrl, _headers) { +module.exports = function Browser (_parameters) { var baseUrl = null; var instance = this; - + //CookieJar and custom headers var cookieJar = new CookieJar(); this.headers = {}; if (_baseUrl) { - baseUrl = url.parse(_baseUrl); + baseUrl = url.parse(_parameters.baseUrl); } if (_headers) { - this.headers = _headers; + this.headers = _parameters.headers; } if (this.headers["User-Agent"] === undefined) { @@ -228,7 +228,7 @@ module.exports.HttpClient = function Browser (_baseUrl, _headers) { pathUrl.method = _request.method; 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"]) { for (let i = 0 ; i < response.headers["set-cookie"].length ; ++i) { cookieJar.update(response.headers["set-cookie"][i]); @@ -249,9 +249,9 @@ module.exports.HttpClient = function Browser (_baseUrl, _headers) { decoder = response; } - fulfill(decoder); + fulfill(response, decoder); } - else if (response.statusCode < 400) { + else if (response.statusCode < 400 && _parameters.redirect) { instance.get(response.headers.location) .then(fulfill) .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); + }); + }); +};