@rxx/http
Version:
Http IO module for rxx.
44 lines (43 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var TYPE_MATCHER = /\[object ([^\]]+)\]/;
var TO_STRING = Object.prototype.toString;
function qs(data) {
var ret = [];
serialize(data, ret);
return ret.join('&');
}
exports.qs = qs;
function getType(value) {
return TO_STRING.call(value).match(TYPE_MATCHER)[1];
}
function serialize(data, resultCollection, parentKey) {
if (parentKey === void 0) { parentKey = ''; }
var type = getType(data);
if (type === 'Object') {
for (var key in data) {
var valueType = getType(data[key]);
var keyValue = "" + (parentKey ? parentKey + "." : '') + key;
if (valueType === 'String' ||
valueType === 'Number' ||
valueType === 'RegExp' ||
valueType === 'Boolean') {
resultCollection.push(encodeURIComponent(keyValue) + "=" + encodeURIComponent(data[key]));
}
else if (valueType === 'Date') {
resultCollection.push(encodeURIComponent(keyValue) + "=" + encodeURIComponent(String(+data[key])));
}
else if (valueType === 'Object') {
serialize(data[key], resultCollection, key);
}
else if (valueType === 'Array') {
serialize(data[key], resultCollection, key);
}
}
}
else if (type === 'Array') {
for (var i = 0, len = data.length; i < len; i++) {
resultCollection.push(encodeURIComponent(parentKey[i]) + "=" + encodeURIComponent(data[i]));
}
}
}