flyio
Version:
Lightweigh Promise based HTTP client for the browser and node.js
43 lines (36 loc) • 1.16 kB
JavaScript
let pkg = require('./../../package.json');
let req = require("request");
module.exports = function (request, responseCallBack) {
//自动管理cookie
let config = {jar: true, proxy: request.proxy}
let rq = req.defaults(config)
let headers = request.headers;
if (!headers['User-Agent'] && !headers['user-agent']) {
headers['User-Agent'] = 'fly/' + pkg.version;
}
//支持gzip
request.gzip = true;
if (request.hasOwnProperty("timeout") && request.timeout < 1) {
//use request lib default timeout
delete request.timeout;
}
let ret = {
statusCode: 0
}
if (request.responseType === "stream") {
delete request.responseType;
request.encoding=null;
}
rq(request, function (error, response, body) {
if (error) {
ret.statusMessage = error.message
} else {
ret.statusCode = response.statusCode
ret.responseText = body;
ret.headers = response.headers;
ret.statusMessage = response.statusMessage;
ret.response = response;
}
responseCallBack(ret)
})
}