Musique/node_modules/http-response-object/lib/index.js
2021-12-04 20:00:33 +01:00

60 lines
2.1 KiB
JavaScript

"use strict";
/**
* A response from a web request
*/
var Response = /** @class */ (function () {
function Response(statusCode, headers, body, url) {
if (typeof statusCode !== 'number') {
throw new TypeError('statusCode must be a number but was ' + typeof statusCode);
}
if (headers === null) {
throw new TypeError('headers cannot be null');
}
if (typeof headers !== 'object') {
throw new TypeError('headers must be an object but was ' + typeof headers);
}
this.statusCode = statusCode;
var headersToLowerCase = {};
for (var key in headers) {
headersToLowerCase[key.toLowerCase()] = headers[key];
}
this.headers = headersToLowerCase;
this.body = body;
this.url = url;
}
Response.prototype.isError = function () {
return this.statusCode === 0 || this.statusCode >= 400;
};
Response.prototype.getBody = function (encoding) {
if (this.statusCode === 0) {
var err = new Error('This request to ' +
this.url +
' resulted in a status code of 0. This usually indicates some kind of network error in a browser (e.g. CORS not being set up or the DNS failing to resolve):\n' +
this.body.toString());
err.statusCode = this.statusCode;
err.headers = this.headers;
err.body = this.body;
err.url = this.url;
throw err;
}
if (this.statusCode >= 300) {
var err = new Error('Server responded to ' +
this.url +
' with status code ' +
this.statusCode +
':\n' +
this.body.toString());
err.statusCode = this.statusCode;
err.headers = this.headers;
err.body = this.body;
err.url = this.url;
throw err;
}
if (!encoding || typeof this.body === 'string') {
return this.body;
}
return this.body.toString(encoding);
};
return Response;
}());
module.exports = Response;