UNPKG

11.5 kBJavaScriptView Raw
1"use strict";
2
3/**
4 * Module dependencies.
5 */
6var util = require('util');
7
8var Stream = require('stream');
9
10var ResponseBase = require('../response-base');
11
12var _require = require('../utils'),
13 mixin = _require.mixin;
14/**
15 * Expose `Response`.
16 */
17
18
19module.exports = Response;
20/**
21 * Initialize a new `Response` with the given `xhr`.
22 *
23 * - set flags (.ok, .error, etc)
24 * - parse header
25 *
26 * @param {Request} req
27 * @param {Object} options
28 * @constructor
29 * @extends {Stream}
30 * @implements {ReadableStream}
31 * @api private
32 */
33
34function Response(request) {
35 Stream.call(this);
36 this.res = request.res;
37 var res = this.res;
38 this.request = request;
39 this.req = request.req;
40 this.text = res.text;
41 this.files = res.files || {};
42 this.buffered = request._resBuffered;
43 this.headers = res.headers;
44 this.header = this.headers;
45
46 this._setStatusProperties(res.statusCode);
47
48 this._setHeaderProperties(this.header);
49
50 this.setEncoding = res.setEncoding.bind(res);
51 res.on('data', this.emit.bind(this, 'data'));
52 res.on('end', this.emit.bind(this, 'end'));
53 res.on('close', this.emit.bind(this, 'close'));
54 res.on('error', this.emit.bind(this, 'error'));
55} // Lazy access res.body.
56// https://github.com/nodejs/node/pull/39520#issuecomment-889697136
57
58
59Object.defineProperty(Response.prototype, 'body', {
60 get: function get() {
61 return this._body !== undefined ? this._body : this.res.body !== undefined ? this.res.body : {};
62 },
63 set: function set(value) {
64 this._body = value;
65 }
66});
67/**
68 * Inherit from `Stream`.
69 */
70
71util.inherits(Response, Stream);
72mixin(Response.prototype, ResponseBase.prototype);
73/**
74 * Implements methods of a `ReadableStream`
75 */
76
77Response.prototype.destroy = function (error) {
78 this.res.destroy(error);
79};
80/**
81 * Pause.
82 */
83
84
85Response.prototype.pause = function () {
86 this.res.pause();
87};
88/**
89 * Resume.
90 */
91
92
93Response.prototype.resume = function () {
94 this.res.resume();
95};
96/**
97 * Return an `Error` representative of this response.
98 *
99 * @return {Error}
100 * @api public
101 */
102
103
104Response.prototype.toError = function () {
105 var req = this.req;
106 var method = req.method;
107 var path = req.path;
108 var message = "cannot ".concat(method, " ").concat(path, " (").concat(this.status, ")");
109 var error = new Error(message);
110 error.status = this.status;
111 error.text = this.text;
112 error.method = method;
113 error.path = path;
114 return error;
115};
116
117Response.prototype.setStatusProperties = function (status) {
118 console.warn('In superagent 2.x setStatusProperties is a private method');
119 return this._setStatusProperties(status);
120};
121/**
122 * To json.
123 *
124 * @return {Object}
125 * @api public
126 */
127
128
129Response.prototype.toJSON = function () {
130 return {
131 req: this.request.toJSON(),
132 header: this.header,
133 status: this.status,
134 text: this.text
135 };
136};
137//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3Jlc3BvbnNlLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiU3RyZWFtIiwiUmVzcG9uc2VCYXNlIiwibWl4aW4iLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVzcG9uc2UiLCJyZXF1ZXN0IiwiY2FsbCIsInJlcyIsInJlcSIsInRleHQiLCJmaWxlcyIsImJ1ZmZlcmVkIiwiX3Jlc0J1ZmZlcmVkIiwiaGVhZGVycyIsImhlYWRlciIsIl9zZXRTdGF0dXNQcm9wZXJ0aWVzIiwic3RhdHVzQ29kZSIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwic2V0RW5jb2RpbmciLCJiaW5kIiwib24iLCJlbWl0IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJwcm90b3R5cGUiLCJnZXQiLCJfYm9keSIsInVuZGVmaW5lZCIsImJvZHkiLCJzZXQiLCJ2YWx1ZSIsImluaGVyaXRzIiwiZGVzdHJveSIsImVycm9yIiwicGF1c2UiLCJyZXN1bWUiLCJ0b0Vycm9yIiwibWV0aG9kIiwicGF0aCIsIm1lc3NhZ2UiLCJzdGF0dXMiLCJFcnJvciIsInNldFN0YXR1c1Byb3BlcnRpZXMiLCJjb25zb2xlIiwid2FybiIsInRvSlNPTiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLElBQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsSUFBTUUsWUFBWSxHQUFHRixPQUFPLENBQUMsa0JBQUQsQ0FBNUI7O0FBQ0EsZUFBa0JBLE9BQU8sQ0FBQyxVQUFELENBQXpCO0FBQUEsSUFBUUcsS0FBUixZQUFRQSxLQUFSO0FBRUE7QUFDQTtBQUNBOzs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxRQUFqQjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVB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ZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbmNvbnN0IFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuY29uc3QgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi4vcmVzcG9uc2UtYmFzZScpO1xuY29uc3QgeyBtaXhpbiB9ID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlc3BvbnNlYC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlc3BvbnNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlc3BvbnNlYCB3aXRoIHRoZSBnaXZlbiBgeGhyYC5cbiAqXG4gKiAgLSBzZXQgZmxhZ3MgKC5vaywgLmVycm9yLCBldGMpXG4gKiAgLSBwYXJzZSBoZWFkZXJcbiAqXG4gKiBAcGFyYW0ge1JlcXVlc3R9IHJlcVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMge1N0cmVhbX1cbiAqIEBpbXBsZW1lbnRzIHtSZWFkYWJsZVN0cmVhbX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlKHJlcXVlc3QpIHtcbiAgU3RyZWFtLmNhbGwodGhpcyk7XG4gIHRoaXMucmVzID0gcmVxdWVzdC5yZXM7XG4gIGNvbnN0IHsgcmVzIH0gPSB0aGlzO1xuICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0O1xuICB0aGlzLnJlcSA9IHJlcXVlc3QucmVxO1xuICB0aGlzLnRleHQgPSByZXMudGV4dDtcbiAgdGhpcy5maWxlcyA9IHJlcy5maWxlcyB8fCB7fTtcbiAgdGhpcy5idWZmZXJlZCA9IHJlcXVlc3QuX3Jlc0J1ZmZlcmVkO1xuICB0aGlzLmhlYWRlcnMgPSByZXMuaGVhZGVycztcbiAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnM7XG4gIHRoaXMuX3NldFN0YXR1c1Byb3BlcnRpZXMocmVzLnN0YXR1c0NvZGUpO1xuICB0aGlzLl9zZXRIZWFkZXJQcm9wZXJ0aWVzKHRoaXMuaGVhZGVyKTtcbiAgdGhpcy5zZXRFbmNvZGluZyA9IHJlcy5zZXRFbmNvZGluZy5iaW5kKHJlcyk7XG4gIHJlcy5vbignZGF0YScsIHRoaXMuZW1pdC5iaW5kKHRoaXMsICdkYXRhJykpO1xuICByZXMub24oJ2VuZCcsIHRoaXMuZW1pdC5iaW5kKHRoaXMsICdlbmQnKSk7XG4gIHJlcy5vbignY2xvc2UnLCB0aGlzLmVtaXQuYmluZCh0aGlzLCAnY2xvc2UnKSk7XG4gIHJlcy5vbignZXJyb3InLCB0aGlzLmVtaXQuYmluZCh0aGlzLCAnZXJyb3InKSk7XG59XG5cbi8vIExhenkgYWNjZXNzIHJlcy5ib2R5LlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzk1MjAjaXNzdWVjb21tZW50LTg4OTY5NzEzNlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlc3BvbnNlLnByb3RvdHlwZSwgJ2JvZHknLCB7XG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYm9keSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHRoaXMuX2JvZHlcbiAgICAgIDogdGhpcy5yZXMuYm9keSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHRoaXMucmVzLmJvZHlcbiAgICAgIDoge307XG4gIH0sXG4gIHNldCh2YWx1ZSkge1xuICAgIHRoaXMuX2JvZHkgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbi8qKlxuICogSW5oZXJpdCBmcm9tIGBTdHJlYW1gLlxuICovXG5cbnV0aWwuaW5oZXJpdHMoUmVzcG9uc2UsIFN0cmVhbSk7XG5cbm1peGluKFJlc3BvbnNlLnByb3RvdHlwZSwgUmVzcG9uc2VCYXNlLnByb3RvdHlwZSk7XG5cbi8qKlxuICogSW1wbGVtZW50cyBtZXRob2RzIG9mIGEgYFJlYWRhYmxlU3RyZWFtYFxuICovXG5cblJlc3BvbnNlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gIHRoaXMucmVzLmRlc3Ryb3koZXJyb3IpO1xufTtcblxuLyoqXG4gKiBQYXVzZS5cbiAqL1xuXG5SZXNwb25zZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMucmVzLnBhdXNlKCk7XG59O1xuXG4vKipcbiAqIFJlc3VtZS5cbiAqL1xuXG5SZXNwb25zZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnJlcy5yZXN1bWUoKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGBFcnJvcmAgcmVwcmVzZW50YXRpdmUgb2YgdGhpcyByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHsgcmVxIH0gPSB0aGlzO1xuICBjb25zdCB7IG1ldGhvZCB9ID0gcmVxO1xuICBjb25zdCB7IHBhdGggfSA9IHJlcTtcblxuICBjb25zdCBtZXNzYWdlID0gYGNhbm5vdCAke21ldGhvZH0gJHtwYXRofSAoJHt0aGlzLnN0YXR1c30pYDtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGVycm9yLnN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICBlcnJvci50ZXh0ID0gdGhpcy50ZXh0O1xuICBlcnJvci5tZXRob2QgPSBtZXRob2Q7XG4gIGVycm9yLnBhdGggPSBwYXRoO1xuXG4gIHJldHVybiBlcnJvcjtcbn07XG5cblJlc3BvbnNlLnByb3RvdHlwZS5zZXRTdGF0dXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHN0YXR1cykge1xuICBjb25zb2xlLndhcm4oJ0luIHN1cGVyYWdlbnQgMi54IHNldFN0YXR1c1Byb3BlcnRpZXMgaXMgYSBwcml2YXRlIG1ldGhvZCcpO1xuICByZXR1cm4gdGhpcy5fc2V0U3RhdHVzUHJvcGVydGllcyhzdGF0dXMpO1xufTtcblxuLyoqXG4gKiBUbyBqc29uLlxuICpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHtcbiAgICByZXE6IHRoaXMucmVxdWVzdC50b0pTT04oKSxcbiAgICBoZWFkZXI6IHRoaXMuaGVhZGVyLFxuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgdGV4dDogdGhpcy50ZXh0XG4gIH07XG59O1xuIl19
\No newline at end of file