UNPKG

hipay-professional-sdk

Version:
77 lines 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBodyParameters = exports.createBody = exports.objectGetOrThrow = exports.getPackageVersion = void 0; const xml_js_1 = require("xml-js"); const Types_1 = require("./Types"); const getPackageVersion = () => { try { const pkg = require(__dirname + '/../package.json'); if (pkg.version) { return '' + pkg.version; } } catch (ignored) { } // istanbul ignore next return '?'; }; exports.getPackageVersion = getPackageVersion; const objectGetOrThrow = (obj, ...keys) => { let r = obj; for (const key of keys) { r = r[key]; if (typeof r === 'undefined') { throw new Error(key + ' is missing!'); } } return r; }; exports.objectGetOrThrow = objectGetOrThrow; const createBody = (endpoint, data, dataType) => { const body = { _declaration: { _attributes: { version: '1.0', encoding: 'UTF-8' } }, 'SOAP-ENV:Envelope': { _attributes: { 'xmlns:SOAP-ENV': 'http://schemas.xmlsoap.org/soap/envelope/', ['xmlns:' + dataType.ns]: endpoint + Types_1.namespaces[dataType.ns], }, 'SOAP-ENV:Body': { [dataType.ns + ':' + dataType.reqType]: { parameters: (0, exports.createBodyParameters)(data), }, }, }, }; return (0, xml_js_1.js2xml)(body, { compact: true }); }; exports.createBody = createBody; const createBodyParameters = (data, key) => { if (data === undefined || data === null) { return undefined; } if (typeof data === 'boolean') { return data ? 1 : 0; } if (typeof data === 'object') { if (Array.isArray(data)) { return { item: data.map((k) => (0, exports.createBodyParameters)(k)) }; } if (data instanceof Date) { return data.toISOString().substr(0, 19); // MySQL DATETIME format (Y-m-dTH:i:s) eg.: 2014-12-25T10:57:55 } if (key === 'freeData') { // TODO: Support custom types using TypeDefinition return { item: Object.keys(data).map((k) => ({ key: k, value: data[k] })) }; } const parameters = {}; for (const k in data) { if (Object.prototype.hasOwnProperty.call(data, k) && !Object.prototype.hasOwnProperty.call(Object.prototype, k)) { parameters[k] = (0, exports.createBodyParameters)(data[k], k); } } return parameters; } return data; }; exports.createBodyParameters = createBodyParameters; //# sourceMappingURL=utils.js.map