Skip to content

Commit

Permalink
Merge pull request #998 from pornel/dry
Browse files Browse the repository at this point in the history
Deduplicate Response creation, order of events
  • Loading branch information
kornelski committed Jun 7, 2016
2 parents fda9b5e + 1bb6fb1 commit 2ed3227
Showing 1 changed file with 21 additions and 33 deletions.
54 changes: 21 additions & 33 deletions lib/node/index.js
Expand Up @@ -352,10 +352,7 @@ Request.prototype.pipe = function(stream, options){
}

self.res = res;
var response = new Response(self);
self.response = response;
self.emit('response', response);
response.redirects = self._redirectList;
self._emitResponse();
if (self._aborted) return;

if (self._shouldUnzip(res)) {
Expand Down Expand Up @@ -632,6 +629,18 @@ Request.prototype._appendQueryString = function(req){
* @api public
*/

Request.prototype._emitResponse = function(body, files){
var response = new Response(this);
this.response = response;
response.redirects = this._redirectList;
if (undefined !== body) {
response.body = body;
}
response.files = files;
this.emit('response', response);
return response;
};

Request.prototype.end = function(fn){
var self = this;
var data = this._data;
Expand Down Expand Up @@ -707,12 +716,8 @@ Request.prototype.end = function(fn){
}

if ('HEAD' == self.method) {
var response = new Response(self);
self.response = response;
response.redirects = self._redirectList;
self.emit('response', response);
self.callback(null, response);
self.emit('end');
self.callback(null, self._emitResponse());
return;
}

Expand All @@ -727,17 +732,12 @@ Request.prototype.end = function(fn){

// TODO: make all parsers take callbacks
if (!parser && multipart) {
var form = new formidable.IncomingForm;
var form = new formidable.IncomingForm();

form.parse(res, function(err, fields, files){
if (err) return self.callback(err);
var response = new Response(self);
self.response = response;
response.body = fields;
response.files = files;
response.redirects = self._redirectList;
self.emit('end');
self.callback(null, response);
self.callback(null, self._emitResponse(fields, files));
});
return;
}
Expand All @@ -746,12 +746,8 @@ Request.prototype.end = function(fn){
if (!parser && isImage(mime)) {
exports.parse.image(res, function(err, obj){
if (err) return self.callback(err);
var response = new Response(self);
self.response = response;
response.body = obj;
response.redirects = self._redirectList;
self.emit('end');
self.callback(null, response);
self.callback(null, self._emitResponse(obj));
});
return;
}
Expand Down Expand Up @@ -786,15 +782,12 @@ Request.prototype.end = function(fn){
}
}

self.res = res;

// unbuffered
if (!buffer) {
debug('unbuffered %s %s', self.method, self.url);
self.res = res;
var response = new Response(self);
self.response = response;
response.redirects = self._redirectList;
self.emit('response', response);
self.callback(null, response);
self.callback(null, self._emitResponse());
if (multipart) return // allow multipart to handle end event
res.on('end', function(){
debug('end %s %s', self.method, self.url);
Expand All @@ -804,19 +797,14 @@ Request.prototype.end = function(fn){
}

// terminating events
self.res = res;
res.on('error', function(err){
self.callback(err, null);
});
res.on('end', function(){
debug('end %s %s', self.method, self.url);
// TODO: unless buffering emit earlier to stream
var response = new Response(self);
self.response = response;
response.redirects = self._redirectList;
self.emit('response', response);
self.callback(null, response);
self.emit('end');
self.callback(null, self._emitResponse());
});
});

Expand Down

0 comments on commit 2ed3227

Please sign in to comment.