UNPKG

ipqs-node-sdk

Version:

React package to interface with the various IPQS APIs

102 lines (101 loc) 3.97 kB
"use strict"; 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;