n8n-nodes-wechat
Version:
This is an n8n-wechat-nodes Library
90 lines • 3.63 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildUploadOptions = exports.getNodeParameters = exports.flattenSameKeyArrays = exports.xml2obj = exports.obj2xml = void 0;
const xml_js_1 = require("xml-js");
const form_data_1 = __importDefault(require("form-data"));
const obj2xml = (obj, options = {}) => {
return (0, xml_js_1.js2xml)(obj, {
compact: true,
textFn: (v, _, o) => (typeof o === 'string' ? `<![CDATA[${v}]]>` : v),
...options,
});
};
exports.obj2xml = obj2xml;
const xml2obj = (xml, options = {}) => {
return (0, xml_js_1.xml2js)(xml, {
compact: true,
textFn: (v) => {
return !isNaN(Number(v)) ? Number(v) : ['true', 'false'].includes(v) ? v === 'true' : v;
},
...options,
});
};
exports.xml2obj = xml2obj;
const flattenSameKeyArrays = (obj) => {
if (Array.isArray(obj))
return obj.map((item) => (0, exports.flattenSameKeyArrays)(item));
if (typeof obj === 'object' && obj !== null) {
const result = {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
let value = (0, exports.flattenSameKeyArrays)(obj[key]);
if (typeof value === 'object' &&
!Array.isArray(value) &&
Object.keys(value).length === 1 &&
value[key] !== undefined &&
Array.isArray(value[key])) {
result[key] = value[key];
}
else {
result[key] = value;
}
}
}
return result;
}
return obj;
};
exports.flattenSameKeyArrays = flattenSameKeyArrays;
const getNodeParameters = (ctx) => {
const result = Object.keys(ctx.getNode().parameters)
.filter((k) => !['resource', 'operation'].includes(k))
.reduce((p, c) => ({ ...p, [c]: ctx.getNodeParameter(c, 0) }), {});
return (0, exports.flattenSameKeyArrays)(result);
};
exports.getNodeParameters = getNodeParameters;
const buildUploadOptions = async (ctx, reqOptions) => {
if (!(reqOptions === null || reqOptions === void 0 ? void 0 : reqOptions.body) || !Object.prototype.toString.call(reqOptions.body).includes('Object')) {
return reqOptions;
}
const body = new form_data_1.default();
for (let k of Object.keys(reqOptions.body)) {
let value = reqOptions.body[k];
if (k.endsWith('BINARY_PROPERTY_NAME')) {
const binaryData = ctx.helpers.assertBinaryData(0, value);
const content = Buffer.from(binaryData.data, 'base64');
const knownLength = content.length;
const { mimeType: contentType, fileName } = binaryData;
const fileField = k.replace('BINARY_PROPERTY_NAME', '');
body.append(fileField, content, {
contentType,
knownLength,
filename: fileName,
});
}
else {
body.append(k, JSON.stringify(value), { contentType: 'application/json' });
}
}
if (!reqOptions.headers)
reqOptions.headers = {};
reqOptions.headers['Content-Length'] = body.getLengthSync();
reqOptions.headers['Content-Type'] = `multipart/related; boundary=${body.getBoundary()}`;
reqOptions.body = body;
return reqOptions;
};
exports.buildUploadOptions = buildUploadOptions;
//# sourceMappingURL=Helpers.js.map
;