@request/core
Version:
HTTP Client Library
54 lines (45 loc) • 1.1 kB
JavaScript
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)
})
}