@coolio/http
Version:
HTTP networking client
43 lines • 2.32 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var helpers_1 = require("./helpers");
var urlEncoding_helper_1 = require("./helpers/urlEncoding.helper");
var contentType_1 = require("./contentType");
exports.bodyParser = function (_a) {
var _b = _a === void 0 ? {} : _a, bodyCasing = _b.bodyCasing, customCaseConverter = _b.customCaseConverter, _c = _b.defaultParser, defaultParser = _c === void 0 ? function (raw) { return raw.arrayBuffer(); } : _c;
var caseConverter = customCaseConverter !== null && customCaseConverter !== void 0 ? customCaseConverter : helpers_1.getCaseConverter(bodyCasing);
var getContentType = function (rawResponse) { return (rawResponse.headers.get('content-type') || '')
.split(';')
.map(function (part) { return part.trim().toLowerCase(); })
.filter(Boolean); };
var bodyParsers = {
TEXT: function (raw) { return raw.text(); },
JSON: function (raw) { return raw.text()
.then(function (body) { return body ? caseConverter(JSON.parse(body)) : null; })
.catch(function (err) {
throw new Error("Response body that was passed to bodyParser is invalid. " + err);
}); },
MULTIPART: function (raw) { return raw.text()
.then(function (body) { return helpers_1.processMultipartBody(body, helpers_1.getBoundaryFromContentTypeHeader(getContentType(raw))); }); },
URL_ENCODED: function (raw) { return raw.text()
.then(urlEncoding_helper_1.urlDecode)
.then(caseConverter); },
};
return function (rawResponse) {
var contentType = getContentType(rawResponse)[0];
var parsedBody = contentType_1.switchContentType(contentType, bodyParsers, defaultParser);
return __assign(__assign({}, rawResponse), { parsedBody: function () { return parsedBody(rawResponse); } });
};
};
//# sourceMappingURL=bodyParser.js.map