UNPKG

@rudderstack/integrations-lib

Version:
93 lines 11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.xmlBuilder = exports.getToken = exports.isExpired = exports.getUrl = exports.parseFilter = exports.parseXML = exports.SoapError = exports.RestError = void 0; const fast_xml_parser_1 = require("fast-xml-parser"); const axios_1 = __importDefault(require("axios")); class RestError extends Error { constructor(ex) { super(ex.response?.data?.message); this.errorcode = ex.response.data.errorcode; this.documentation = ex.response.data.documentation; this.statusCode = ex.response.status; } } exports.RestError = RestError; class SoapError extends Error { constructor(ex) { super(ex.message); this.code = ex.code; this.data = ex.response.data; this.statusCode = ex.response.status; } } exports.SoapError = SoapError; const parseXML = (data) => { const xmlParser = new fast_xml_parser_1.XMLParser({ removeNSPrefix: true, parseAttributeValue: true }); return xmlParser.parse(data)?.Envelope?.Body; }; exports.parseXML = parseXML; const parseFilter = (filter) => ({ Property: filter.leftOperand, SimpleOperator: 'equals', Value: filter.rightOperand, '@_xsi:type': 'SimpleFilterPart', }); exports.parseFilter = parseFilter; const getUrl = (subDomain) => `https://${subDomain}.rest.marketingcloudapis.com`; exports.getUrl = getUrl; const isExpired = (authObject) => { let expired = false; // if current atomic time is equal or after exp, or we don't have a token, return true if ((authObject.expiration && authObject.expiration <= process.hrtime()[0]) || !authObject.access_token) { expired = true; } return expired; }; exports.isExpired = isExpired; const getToken = async (authObject) => { const payload = { grant_type: 'client_credentials', client_id: authObject.clientId, client_secret: authObject.clientSecret, }; const result = await (0, axios_1.default)({ method: 'post', baseURL: `https://${authObject.subDomain}.auth.marketingcloudapis.com`, url: '/v2/token', data: payload, }); return Object.assign(authObject, result.data, { expiration: process.hrtime()[0] + result.data.expires_in, }); }; exports.getToken = getToken; const xmlBuilder = (object, properties, accessToken, filter) => { const jsonToXml = new fast_xml_parser_1.XMLBuilder({ ignoreAttributes: false }); const headers = { fueloauth: { '#text': accessToken } }; const retrieveReq = { ObjectType: object, Properties: properties, }; if (filter) { retrieveReq.Filter = filter; } return jsonToXml.build({ Envelope: { Body: { RetrieveRequestMsg: { '@_xmlns': 'http://exacttarget.com/wsdl/partnerAPI', RetrieveRequest: retrieveReq, }, }, '@_xmlns': 'http://schemas.xmlsoap.org/soap/envelope/', '@_xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', Header: headers, }, }); }; exports.xmlBuilder = xmlBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUF3RDtBQUN4RCxrREFBMEI7QUFHMUIsTUFBYSxTQUFVLFNBQVEsS0FBSztJQU9sQyxZQUFZLEVBQUU7UUFDWixLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFiRCw4QkFhQztBQUVELE1BQWEsU0FBVSxTQUFRLEtBQUs7SUFPbEMsWUFBWSxFQUFFO1FBQ1osS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWJELDhCQWFDO0FBRU0sTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQW9CLEVBQUU7SUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSwyQkFBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJ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QWdDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYTUxCdWlsZGVyLCBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEF1dGhPYmplY3QsIEZpbHRlck9iaiwgU29hcFJlc3BvbnNlQm9keSB9IGZyb20gJy4vdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBSZXN0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGVycm9yY29kZTogc3RyaW5nO1xuXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICBzdGF0dXNDb2RlOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZXgpIHtcbiAgICBzdXBlcihleC5yZXNwb25zZT8uZGF0YT8ubWVzc2FnZSk7XG4gICAgdGhpcy5lcnJvcmNvZGUgPSBleC5yZXNwb25zZS5kYXRhLmVycm9yY29kZTtcbiAgICB0aGlzLmRvY3VtZW50YXRpb24gPSBleC5yZXNwb25zZS5kYXRhLmRvY3VtZW50YXRpb247XG4gICAgdGhpcy5zdGF0dXNDb2RlID0gZXgucmVzcG9uc2Uuc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2FwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcblxuICBkYXRhOiBzdHJpbmc7XG5cbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGV4KSB7XG4gICAgc3VwZXIoZXgubWVzc2FnZSk7XG4gICAgdGhpcy5jb2RlID0gZXguY29kZTtcbiAgICB0aGlzLmRhdGEgPSBleC5yZXNwb25zZS5kYXRhO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IGV4LnJlc3BvbnNlLnN0YXR1cztcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcGFyc2VYTUwgPSAoZGF0YTogYW55KTogU29hcFJlc3BvbnNlQm9keSA9PiB7XG4gIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYTUxQYXJzZXIoeyByZW1vdmVOU1ByZWZpeDogdHJ1ZSwgcGFyc2VBdHRyaWJ1dGVWYWx1ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIHhtbFBhcnNlci5wYXJzZShkYXRhKT8uRW52ZWxvcGU/LkJvZHk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJPYmopID0+ICh7XG4gIFByb3BlcnR5OiBmaWx0ZXIubGVmdE9wZXJhbmQsXG4gIFNpbXBsZU9wZXJhdG9yOiAnZXF1YWxzJyxcbiAgVmFsdWU6IGZpbHRlci5yaWdodE9wZXJhbmQsXG4gICdAX3hzaTp0eXBlJzogJ1NpbXBsZUZpbHRlclBhcnQnLFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRVcmwgPSAoc3ViRG9tYWluOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgYGh0dHBzOi8vJHtzdWJEb21haW59LnJlc3QubWFya2V0aW5nY2xvdWRhcGlzLmNvbWA7XG5cbmV4cG9ydCBjb25zdCBpc0V4cGlyZWQgPSAoYXV0aE9iamVjdDogQXV0aE9iamVjdCk6IGJvb2xlYW4gPT4ge1xuICBsZXQgZXhwaXJlZCA9IGZhbHNlO1xuICAvLyBpZiBjdXJyZW50IGF0b21pYyB0aW1lIGlzIGVxdWFsIG9yIGFmdGVyIGV4cCwgb3Igd2UgZG9uJ3QgaGF2ZSBhIHRva2VuLCByZXR1cm4gdHJ1ZVxuICBpZiAoXG4gICAgKGF1dGhPYmplY3QuZXhwaXJhdGlvbiAmJiBhdXRoT2JqZWN0LmV4cGlyYXRpb24gPD0gcHJvY2Vzcy5ocnRpbWUoKVswXSkgfHxcbiAgICAhYXV0aE9iamVjdC5hY2Nlc3NfdG9rZW5cbiAgKSB7XG4gICAgZXhwaXJlZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gZXhwaXJlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUb2tlbiA9IGFzeW5jIChhdXRoT2JqZWN0OiBBdXRoT2JqZWN0KTogUHJvbWlzZTxBdXRoT2JqZWN0PiA9PiB7XG4gIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgZ3JhbnRfdHlwZTogJ2NsaWVudF9jcmVkZW50aWFscycsXG4gICAgY2xpZW50X2lkOiBhdXRoT2JqZWN0LmNsaWVudElkLFxuICAgIGNsaWVudF9zZWNyZXQ6IGF1dGhPYmplY3QuY2xpZW50U2VjcmV0LFxuICB9O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcyh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgYmFzZVVSTDogYGh0dHBzOi8vJHthdXRoT2JqZWN0LnN1YkRvbWFpbn0uYXV0aC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tYCxcbiAgICB1cmw6ICcvdjIvdG9rZW4nLFxuICAgIGRhdGE6IHBheWxvYWQsXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihhdXRoT2JqZWN0LCByZXN1bHQuZGF0YSwge1xuICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyByZXN1bHQuZGF0YS5leHBpcmVzX2luLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB4bWxCdWlsZGVyID0gKFxuICBvYmplY3Q6IHN0cmluZyxcbiAgcHJvcGVydGllczogc3RyaW5nW10sXG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nLFxuICBmaWx0ZXI/OiBhbnksXG4pID0+IHtcbiAgY29uc3QganNvblRvWG1sID0gbmV3IFhNTEJ1aWxkZXIoeyBpZ25vcmVBdHRyaWJ1dGVzOiBmYWxzZSB9KTtcbiAgY29uc3QgaGVhZGVycyA9IHsgZnVlbG9hdXRoOiB7ICcjdGV4dCc6IGFjY2Vzc1Rva2VuIH0gfTtcbiAgY29uc3QgcmV0cmlldmVSZXE6IHtcbiAgICBPYmplY3RUeXBlOiBzdHJpbmc7XG4gICAgUHJvcGVydGllczogc3RyaW5nW107XG4gICAgRmlsdGVyPzogYW55O1xuICB9ID0ge1xuICAgIE9iamVjdFR5cGU6IG9iamVjdCxcbiAgICBQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuICB9O1xuICBpZiAoZmlsdGVyKSB7XG4gICAgcmV0cmlldmVSZXEuRmlsdGVyID0gZmlsdGVyO1xuICB9XG4gIHJldHVybiBqc29uVG9YbWwuYnVpbGQoe1xuICAgIEVudmVsb3BlOiB7XG4gICAgICBCb2R5OiB7XG4gICAgICAgIFJldHJpZXZlUmVxdWVzdE1zZzoge1xuICAgICAgICAgICdAX3htbG5zJzogJ2h0dHA6Ly9leGFjdHRhcmdldC5jb20vd3NkbC9wYXJ0bmVyQVBJJyxcbiAgICAgICAgICBSZXRyaWV2ZVJlcXVlc3Q6IHJldHJpZXZlUmVxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdAX3htbG5zJzogJ2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvJyxcbiAgICAgICdAX3htbG5zOnhzaSc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZScsXG4gICAgICBIZWFkZXI6IGhlYWRlcnMsXG4gICAgfSxcbiAgfSk7XG59O1xuIl19