UNPKG

@rudderstack/integrations-lib

Version:

A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.

93 lines 11.2 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUF3RDtBQUN4RCxrREFBMEM7QUFHMUMsTUFBYSxTQUFVLFNBQVEsS0FBSztJQU9sQyxZQUFZLEVBQWlDO1FBQzNDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWJELDhCQWFDO0FBRUQsTUFBYSxTQUFVLFNBQVEsS0FBSztJQU9sQyxZQUFZLEVBQU87UUFDakIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWJELDhCQWFDO0FBRU0sTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQW9CLEVBQUU7SUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSwyQkFBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJ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VSxjQWdDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYTUxCdWlsZGVyLCBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBBdXRoT2JqZWN0LCBGaWx0ZXJPYmosIFNGTUNFcnJvclJlc3BvbnNlLCBTb2FwUmVzcG9uc2VCb2R5IH0gZnJvbSAnLi90eXBlJztcblxuZXhwb3J0IGNsYXNzIFJlc3RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgZXJyb3Jjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgZG9jdW1lbnRhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXR1c0NvZGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihleDogQXhpb3NFcnJvcjxTRk1DRXJyb3JSZXNwb25zZT4pIHtcbiAgICBzdXBlcihleC5yZXNwb25zZT8uZGF0YT8ubWVzc2FnZSk7XG4gICAgdGhpcy5lcnJvcmNvZGUgPSBleC5yZXNwb25zZT8uZGF0YS5lcnJvcmNvZGU7XG4gICAgdGhpcy5kb2N1bWVudGF0aW9uID0gZXgucmVzcG9uc2U/LmRhdGEuZG9jdW1lbnRhdGlvbjtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBleC5yZXNwb25zZT8uc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2FwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcblxuICBkYXRhOiBzdHJpbmc7XG5cbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGV4OiBhbnkpIHtcbiAgICBzdXBlcihleC5tZXNzYWdlKTtcbiAgICB0aGlzLmNvZGUgPSBleC5jb2RlO1xuICAgIHRoaXMuZGF0YSA9IGV4LnJlc3BvbnNlPy5kYXRhO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IGV4LnJlc3BvbnNlPy5zdGF0dXM7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlWE1MID0gKGRhdGE6IGFueSk6IFNvYXBSZXNwb25zZUJvZHkgPT4ge1xuICBjb25zdCB4bWxQYXJzZXIgPSBuZXcgWE1MUGFyc2VyKHsgcmVtb3ZlTlNQcmVmaXg6IHRydWUsIHBhcnNlQXR0cmlidXRlVmFsdWU6IHRydWUgfSk7XG4gIHJldHVybiB4bWxQYXJzZXIucGFyc2UoZGF0YSk/LkVudmVsb3BlPy5Cb2R5O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyT2JqKSA9PiAoe1xuICBQcm9wZXJ0eTogZmlsdGVyLmxlZnRPcGVyYW5kLFxuICBTaW1wbGVPcGVyYXRvcjogJ2VxdWFscycsXG4gIFZhbHVlOiBmaWx0ZXIucmlnaHRPcGVyYW5kLFxuICAnQF94c2k6dHlwZSc6ICdTaW1wbGVGaWx0ZXJQYXJ0Jyxcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VXJsID0gKHN1YkRvbWFpbjogc3RyaW5nKTogc3RyaW5nID0+XG4gIGBodHRwczovLyR7c3ViRG9tYWlufS5yZXN0Lm1hcmtldGluZ2Nsb3VkYXBpcy5jb21gO1xuXG5leHBvcnQgY29uc3QgaXNFeHBpcmVkID0gKGF1dGhPYmplY3Q6IEF1dGhPYmplY3QpOiBib29sZWFuID0+IHtcbiAgbGV0IGV4cGlyZWQgPSBmYWxzZTtcbiAgLy8gaWYgY3VycmVudCBhdG9taWMgdGltZSBpcyBlcXVhbCBvciBhZnRlciBleHAsIG9yIHdlIGRvbid0IGhhdmUgYSB0b2tlbiwgcmV0dXJuIHRydWVcbiAgaWYgKFxuICAgIChhdXRoT2JqZWN0LmV4cGlyYXRpb24gJiYgYXV0aE9iamVjdC5leHBpcmF0aW9uIDw9IHByb2Nlc3MuaHJ0aW1lKClbMF0pIHx8XG4gICAgIWF1dGhPYmplY3QuYWNjZXNzX3Rva2VuXG4gICkge1xuICAgIGV4cGlyZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGV4cGlyZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VG9rZW4gPSBhc3luYyAoYXV0aE9iamVjdDogQXV0aE9iamVjdCk6IFByb21pc2U8QXV0aE9iamVjdD4gPT4ge1xuICBjb25zdCBwYXlsb2FkID0ge1xuICAgIGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnLFxuICAgIGNsaWVudF9pZDogYXV0aE9iamVjdC5jbGllbnRJZCxcbiAgICBjbGllbnRfc2VjcmV0OiBhdXRoT2JqZWN0LmNsaWVudFNlY3JldCxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3Moe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIGJhc2VVUkw6IGBodHRwczovLyR7YXV0aE9iamVjdC5zdWJEb21haW59LmF1dGgubWFya2V0aW5nY2xvdWRhcGlzLmNvbWAsXG4gICAgdXJsOiAnL3YyL3Rva2VuJyxcbiAgICBkYXRhOiBwYXlsb2FkLFxuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aE9iamVjdCwgcmVzdWx0LmRhdGEsIHtcbiAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgcmVzdWx0LmRhdGEuZXhwaXJlc19pbixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgeG1sQnVpbGRlciA9IChcbiAgb2JqZWN0OiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBhY2Nlc3NUb2tlbj86IHN0cmluZyxcbiAgZmlsdGVyPzogYW55LFxuKSA9PiB7XG4gIGNvbnN0IGpzb25Ub1htbCA9IG5ldyBYTUxCdWlsZGVyKHsgaWdub3JlQXR0cmlidXRlczogZmFsc2UgfSk7XG4gIGNvbnN0IGhlYWRlcnMgPSB7IGZ1ZWxvYXV0aDogeyAnI3RleHQnOiBhY2Nlc3NUb2tlbiB9IH07XG4gIGNvbnN0IHJldHJpZXZlUmVxOiB7XG4gICAgT2JqZWN0VHlwZTogc3RyaW5nO1xuICAgIFByb3BlcnRpZXM6IHN0cmluZ1tdO1xuICAgIEZpbHRlcj86IGFueTtcbiAgfSA9IHtcbiAgICBPYmplY3RUeXBlOiBvYmplY3QsXG4gICAgUHJvcGVydGllczogcHJvcGVydGllcyxcbiAgfTtcbiAgaWYgKGZpbHRlcikge1xuICAgIHJldHJpZXZlUmVxLkZpbHRlciA9IGZpbHRlcjtcbiAgfVxuICByZXR1cm4ganNvblRvWG1sLmJ1aWxkKHtcbiAgICBFbnZlbG9wZToge1xuICAgICAgQm9keToge1xuICAgICAgICBSZXRyaWV2ZVJlcXVlc3RNc2c6IHtcbiAgICAgICAgICAnQF94bWxucyc6ICdodHRwOi8vZXhhY3R0YXJnZXQuY29tL3dzZGwvcGFydG5lckFQSScsXG4gICAgICAgICAgUmV0cmlldmVSZXF1ZXN0OiByZXRyaWV2ZVJlcSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnQF94bWxucyc6ICdodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLycsXG4gICAgICAnQF94bWxuczp4c2knOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuICAgICAgSGVhZGVyOiBoZWFkZXJzLFxuICAgIH0sXG4gIH0pO1xufTtcbiJdfQ==