UNPKG

@request/core

Version:
54 lines (45 loc) 1.1 kB
var bl = require('bl') var parse = require('./parse') exports.request = function (req, options) { var buffer = bl() , encoding = options.encoding , callback = options.callback req.on('error', options.callback.bind(req)) var _res req.on('response', function (res) { _res = res }) req.on('data', function (chunk) { buffer.append(chunk) }) req.on('end', function () { var body if (encoding === 'binary') { // binary body = buffer.slice() req.emit('body', body) } else { // string body = buffer.toString() req.emit('body', body) // json if (options.parse.json /*&& parse.isJSON(_res)*/) { // jsonp if (parse.isJSONP(body)) { body = parse.parseJSONP(body) } if (typeof body === 'string') { try { body = JSON.parse(body, options.parse.json) } catch (err) { req.emit('callback: JSON parse error!') } } req.emit('json', body) } } callback(null, _res, body) }) }