ipqs-node-sdk
Version:
React package to interface with the various IPQS APIs
102 lines (101 loc) • 3.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateDates = exports.generateUpdatePostParams = exports.getPKHeader = exports.updateParamsToOptionallyAddPK = exports.whichUrl = exports.getIpAddress = exports.disallowPKConfigs = exports.isValidDateFormat = exports.filterObjectByKeys = exports.serializeParams = exports.sanitizeExportType = void 0;
const const_1 = require("../utils/request/const");
const const_2 = require("../utils/const");
const sanitizeExportType = (exportType) => {
const validValues = ['json', 'xml'];
if (validValues.includes(exportType)) {
return exportType;
}
return 'json';
};
exports.sanitizeExportType = sanitizeExportType;
const serializeParams = (params) => {
return Object.entries(params).map(([key, value]) => {
return `${key}=${encodeURIComponent(value)}`;
}).join('&');
};
exports.serializeParams = serializeParams;
const filterObjectByKeys = (obj, keysToRemove) => {
const filteredObj = {};
Object.keys(obj).forEach((key) => {
if (!keysToRemove.includes(key)) {
// We already check for types before this point, so we can use <never>
filteredObj[key] = obj[key];
}
});
return filteredObj;
};
exports.filterObjectByKeys = filterObjectByKeys;
const isValidDateFormat = (input, regexArr) => {
if (!regexArr.some(regex => regex.test(input))) {
return false;
}
const date = new Date(input);
return !isNaN(date.getTime());
};
exports.isValidDateFormat = isValidDateFormat;
const disallowPKConfigs = (params) => {
const { config: { pkAsGetOrPostParam, pkAsHeader } } = params;
return !(pkAsGetOrPostParam || pkAsHeader);
};
exports.disallowPKConfigs = disallowPKConfigs;
const getIpAddress = (ipAddress) => {
const defaultIp = '';
return ipAddress !== null && ipAddress !== void 0 ? ipAddress : defaultIp;
};
exports.getIpAddress = getIpAddress;
const whichUrl = (privateKey, params, urlPropName) => {
const { config: { exportType, pkAsGetOrPostParam, pkAsHeader }, requestParameters } = params;
const sanitizedExportType = (0, exports.sanitizeExportType)(exportType);
let value;
if (urlPropName === 'requests') {
value = 'list';
}
else {
value = encodeURIComponent(requestParameters[urlPropName]);
}
return (pkAsGetOrPostParam || pkAsHeader)
?
`${const_1.BASE_URL}/${sanitizedExportType}/${urlPropName}` :
`${const_1.BASE_URL}/${sanitizedExportType}/${urlPropName}/${privateKey}/${value}`;
};
exports.whichUrl = whichUrl;
const updateParamsToOptionallyAddPK = (params, privateKey, urlPropName) => {
const { config: { pkAsGetOrPostParam, pkAsHeader } } = params;
return (pkAsGetOrPostParam || pkAsHeader)
? Object.assign({ key: privateKey }, params.requestParameters) :
(0, exports.filterObjectByKeys)(params.requestParameters, [urlPropName]);
};
exports.updateParamsToOptionallyAddPK = updateParamsToOptionallyAddPK;
const getPKHeader = (params, privateKey) => {
const { config: { pkAsHeader } } = params;
let retVal = {};
if (pkAsHeader) {
retVal = { "IPQS-KEY": privateKey };
}
return retVal;
};
exports.getPKHeader = getPKHeader;
const generateUpdatePostParams = (updateParameters) => {
const updatedParams = {};
for (const [key, value] of Object.entries(updateParameters)) {
const newKey = `update[${key}]`;
updatedParams[newKey] = `${encodeURIComponent(value)}`;
}
return updatedParams;
};
exports.generateUpdatePostParams = generateUpdatePostParams;
const validateDates = (obj, keysToTest) => {
for (const key in obj) {
if (keysToTest.includes(key)) {
const value = obj[key];
if (!(0, exports.isValidDateFormat)(value, const_2.DATE_REGEXES)) {
return false;
}
}
}
return true;
};
exports.validateDates = validateDates;