hipay-professional-sdk
Version:
HiPay Professional SDK for JavaScript
77 lines • 2.71 kB
JavaScript
;
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