libreccm-legacy/trunk-images/node_modules/popsicle/dist/plugins/common.js

102 lines
3.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FormData = require("form-data");
var querystring_1 = require("querystring");
var index_1 = require("./is-host/index");
var form_1 = require("../form");
var JSON_MIME_REGEXP = /^application\/(?:[\w!#\$%&\*`\-\.\^~]*\+)?json$/i;
var URL_ENCODED_MIME_REGEXP = /^application\/x-www-form-urlencoded$/i;
var FORM_MIME_REGEXP = /^multipart\/form-data$/i;
var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/;
function wrap(value) {
return function () { return value; };
}
exports.wrap = wrap;
exports.headers = wrap(function (request, next) {
if (!request.get('Accept')) {
request.set('Accept', '*/*');
}
request.remove('Host');
return next();
});
exports.stringify = wrap(function (request, next) {
var body = request.body;
if (Object(body) !== body) {
request.body = body == null ? null : String(body);
return next();
}
if (index_1.default(body)) {
return next();
}
var type = request.type();
if (!type) {
type = 'application/json';
request.type(type);
}
try {
if (JSON_MIME_REGEXP.test(type)) {
request.body = JSON.stringify(body);
}
else if (FORM_MIME_REGEXP.test(type)) {
request.body = form_1.default(body);
}
else if (URL_ENCODED_MIME_REGEXP.test(type)) {
request.body = querystring_1.stringify(body);
}
}
catch (err) {
return Promise.reject(request.error('Unable to stringify request body: ' + err.message, 'ESTRINGIFY', err));
}
if (request.body instanceof FormData) {
request.remove('Content-Type');
}
return next();
});
function parse(type, strict) {
var types = Array.isArray(type) ? type : [type];
for (var _i = 0, types_1 = types; _i < types_1.length; _i++) {
var type_1 = types_1[_i];
if (type_1 !== 'json' && type_1 !== 'urlencoded') {
throw new TypeError("Unexpected parse type: " + type_1);
}
}
return function (request, next) {
return next()
.then(function (response) {
var body = response.body;
var responseType = response.type();
if (body == null || body === '') {
response.body = null;
return response;
}
if (responseType == null) {
throw request.error("Unable to parse empty response content type", 'EPARSE');
}
if (typeof body !== 'string') {
throw request.error("Unable to parse non-string response body", 'EPARSE');
}
for (var _i = 0, types_2 = types; _i < types_2.length; _i++) {
var type_2 = types_2[_i];
if (type_2 === 'json' && JSON_MIME_REGEXP.test(responseType)) {
try {
response.body = JSON.parse(body.replace(JSON_PROTECTION_PREFIX, ''));
}
catch (err) {
throw request.error("Unable to parse response body: " + err.message, 'EPARSE', err);
}
return response;
}
if (type_2 === 'urlencoded' && URL_ENCODED_MIME_REGEXP.test(responseType)) {
response.body = querystring_1.parse(body);
return response;
}
}
if (strict !== false) {
throw request.error("Unhandled response type: " + responseType, 'EPARSE');
}
return response;
});
};
}
exports.parse = parse;
//# sourceMappingURL=common.js.map