braze-api
Version:
Track users, send messages, export data, and more with Braze API.
63 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildParams = buildParams;
const url_1 = require("url");
/**
* Build query string params.
*
* @param parameters - Request parameters.
* @returns - Query string.
*/
function buildParams(parameters) {
if (!parameters) {
return '';
}
const searchParams = Object.entries(parameters).reduce((params, [key, value]) => {
if (Array.isArray(value)) {
return appendParam(params, `${key}[]`, value);
}
return appendParam(params, key, value);
}, new url_1.URLSearchParams());
return searchParams.toString();
}
/**
* Append query string param.
*
* @param searchParams - Search params.
* @param key - Key.
* @param value - Value.
* @returns - URL search params.
*/
function appendParam(searchParams, key, value) {
if (value === undefined || value === null) {
return searchParams;
}
if (Array.isArray(value)) {
value.forEach((currentValue) => {
appendParam(searchParams, key, currentValue);
});
return searchParams;
}
searchParams.append(key, getValue(key, value));
return searchParams;
}
/**
* Get string value.
*
* @param key - Key.
* @param value - Value.
* @returns - String value.
*/
function getValue(key, value) {
switch (typeof value) {
case 'boolean':
return JSON.stringify(value);
case 'string':
return value;
case 'number':
return value.toString();
default:
throw new Error(`Unhandled param type for key "${key}"`);
}
}
//# sourceMappingURL=params.js.map