FuelSDK-Node-SOAP icon indicating copy to clipboard operation
FuelSDK-Node-SOAP copied to clipboard

Add multiple deletion

Open yebl opened this issue 4 years ago • 3 comments

yebl avatar Jun 02 '20 06:06 yebl

plz add this !

renatovico avatar Sep 02 '20 19:09 renatovico

@yebl can this change be tested?

colins44 avatar May 06 '22 01:05 colins44

Hi colins44 i have this monkeypatch implemented over 1 year, and working perfect:

client.SoapClient.soapRequestAsync = util.promisify(client.SoapClient.soapRequest);

    client.SoapClient.updateArray = async (type, props, options) => {
        const updateQueryAllAccounts = configureQueryAllAccounts(options);

        if (Array.isArray(props)) {
            // eslint-disable-next-line no-return-assign
            props.forEach(item => (item.$ = { 'xsi:type': type }));
        } else {
            props.$ = { 'xsi:type': type };
        }

        const reqOptions = helpers.parseReqOptions(options);
        const body = {
            UpdateRequest: {
                $: {
                    xmlns: 'http://exacttarget.com/wsdl/partnerAPI'
                },
                Options: options,
                Objects: props
            }
        };

        updateQueryAllAccounts(body.UpdateRequest, 'Options');

        try {
            const resp = await client.SoapClient.soapRequestAsync({
                action: 'Update',
                req: body,
                key: 'UpdateResponse',
                retry: true,
                reqOptions
            });

            if (lodash.get(resp, 'body.OverallStatus') === 'OK') {
                logger.notice('Request OK');
                // logger.debug(util.inspect(resp.res.request.body));
                // logger.debug(util.inspect(resp.body));
            } else {
                logger.error(util.inspect(resp), { props });
                logger.debug(JSON.stringify(body));
                // logger.error(props);
            }
        } catch (err) {
            if (err && err.results) {
                const errors = lodash.reject(err.results, { StatusCode: 'OK' });
                logger.error('sales force error integration', { errors });
                const valueErrors = lodash.get(errors, '0');
                if (valueErrors) {
                    logger.debug(util.inspect(valueErrors.Object.Properties));
                    logger.debug(util.inspect(valueErrors.ValueErrors));
                }
            } else {
                logger.error(util.inspect(err), { props });
                logger.debug(JSON.stringify(body));
            }

            // logger.error(props);
            // logger.error(err.results[0]);
        }
    };

renatovico avatar May 06 '22 16:05 renatovico