@coolio/http
Version:
HTTP networking client
42 lines • 2.13 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var isNil_1 = __importDefault(require("lodash/isNil"));
var isString_1 = __importDefault(require("lodash/isString"));
var isBuffer_1 = __importDefault(require("lodash/isBuffer"));
var helpers_1 = require("./helpers");
var urlEncoding_helper_1 = require("./helpers/urlEncoding.helper");
var contentType_1 = require("./contentType");
var formData_1 = require("./formData");
exports.bodySerializer = function (_a) {
var bodyCasing = (_a === void 0 ? {} : _a).bodyCasing;
var caseConverter = helpers_1.getCaseConverter(bodyCasing);
var bodySerializers = {
JSON: function (body) { return JSON.stringify(caseConverter(body)); },
URL_ENCODED: function (body) { return urlEncoding_helper_1.urlEncode(caseConverter(body)); },
MULTIPART: function (body) { return formData_1.CFormData.from(caseConverter(body)); },
TEXT: function (body) { return String(body); },
};
return function (options) {
var contentTypeHeader = helpers_1.getHeader(options.headers, 'content-type') || '';
var contentType = contentTypeHeader.split(';')
.map(function (type) { return type.trim().toLowerCase(); });
var body = options.body;
if (isNil_1.default(body) || isString_1.default(body) || isBuffer_1.default(body) || formData_1.CFormData.isFormData(body)) {
return body;
}
if (typeof body === 'object') {
for (var _i = 0, contentType_2 = contentType; _i < contentType_2.length; _i++) {
var type = contentType_2[_i];
var serializedBody = contentType_1.switchContentType(type, bodySerializers);
if (serializedBody) {
return serializedBody(body);
}
}
}
throw new Error("Can not serialize request body. Content-Type \"" + contentTypeHeader + "\"");
};
};
//# sourceMappingURL=bodySerializer.js.map