UNPKG

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