@rudderstack/integrations-lib
Version:
93 lines • 11 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUF3RDtBQUN4RCxrREFBMEI7QUFHMUIsTUFBYSxTQUFVLFNBQVEsS0FBSztJQU9sQyxZQUFZLEVBQUU7UUFDWixLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFiRCw4QkFhQztBQUVELE1BQWEsU0FBVSxTQUFRLEtBQUs7SUFPbEMsWUFBWSxFQUFFO1FBQ1osS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWJELDhCQWFDO0FBRU0sTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQW9CLEVBQUU7SUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSwyQkFBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUhXLFFBQUEsUUFBUSxZQUduQjtBQUVLLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVc7SUFDNUIsY0FBYyxFQUFFLFFBQVE7SUFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZO0lBQzFCLFlBQVksRUFBRSxrQkFBa0I7Q0FDakMsQ0FBQyxDQUFDO0FBTFUsUUFBQSxXQUFXLGVBS3JCO0FBRUksTUFBTSxNQUFNLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUUsQ0FDbEQsV0FBVyxTQUFTLDhCQUE4QixDQUFDO0FBRHhDLFFBQUEsTUFBTSxVQUNrQztBQUU5QyxNQUFNLFNBQVMsR0FBRyxDQUFDLFVBQXNCLEVBQVcsRUFBRTtJQUMzRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDcEIsc0ZBQXNGO0lBQ3RGLElBQ0UsQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsVUFBVSxDQUFDLFlBQVksRUFDeEIsQ0FBQztRQUNELE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQVhXLFFBQUEsU0FBUyxhQVdwQjtBQUVLLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxVQUFzQixFQUF1QixFQUFFO0lBQzVFLE1BQU0sT0FBTyxHQUFHO1FBQ2QsVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQVE7UUFDOUIsYUFBYSxFQUFFLFVBQVUsQ0FBQyxZQUFZO0tBQ3ZDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsZUFBSyxFQUFDO1FBQ3pCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLFdBQVcsVUFBVSxDQUFDLFNBQVMsOEJBQThCO1FBQ3RFLEdBQUcsRUFBRSxXQUFXO1FBQ2hCLElBQUksRUFBRSxPQUFPO0tBQ2QsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQzVDLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVO0tBQ3pELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQWZXLFFBQUEsUUFBUSxZQWVuQjtBQUVLLE1BQU0sVUFBVSxHQUFHLENBQ3hCLE1BQWMsRUFDZCxVQUFvQixFQUNwQixXQUFvQixFQUNwQixNQUFZLEVBQ1osRUFBRTtJQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksNEJBQVUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUN4RCxNQUFNLFdBQVcsR0FJYjtRQUNGLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFVBQVUsRUFBRSxVQUFVO0tBQ3ZCLENBQUM7SUFDRixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNyQixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUU7Z0JBQ0osa0JBQWtCLEVBQUU7b0JBQ2xCLFNBQVMsRUFBRSx3Q0FBd0M7b0JBQ25ELGVBQWUsRUFBRSxXQUFXO2lCQUM3QjthQUNGO1lBQ0QsU0FBUyxFQUFFLDJDQUEyQztZQUN0RCxhQUFhLEVBQUUsMkNBQTJDO1lBQzFELE1BQU0sRUFBRSxPQUFPO1NBQ2hCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBaENXLFFBQUEsVUFBVSxjQWdDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYTUxCdWlsZGVyLCBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEF1dGhPYmplY3QsIEZpbHRlck9iaiwgU29hcFJlc3BvbnNlQm9keSB9IGZyb20gJy4vdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBSZXN0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGVycm9yY29kZTogc3RyaW5nO1xuXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICBzdGF0dXNDb2RlOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZXgpIHtcbiAgICBzdXBlcihleC5yZXNwb25zZT8uZGF0YT8ubWVzc2FnZSk7XG4gICAgdGhpcy5lcnJvcmNvZGUgPSBleC5yZXNwb25zZS5kYXRhLmVycm9yY29kZTtcbiAgICB0aGlzLmRvY3VtZW50YXRpb24gPSBleC5yZXNwb25zZS5kYXRhLmRvY3VtZW50YXRpb247XG4gICAgdGhpcy5zdGF0dXNDb2RlID0gZXgucmVzcG9uc2Uuc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2FwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcblxuICBkYXRhOiBzdHJpbmc7XG5cbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGV4KSB7XG4gICAgc3VwZXIoZXgubWVzc2FnZSk7XG4gICAgdGhpcy5jb2RlID0gZXguY29kZTtcbiAgICB0aGlzLmRhdGEgPSBleC5yZXNwb25zZS5kYXRhO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IGV4LnJlc3BvbnNlLnN0YXR1cztcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcGFyc2VYTUwgPSAoZGF0YTogYW55KTogU29hcFJlc3BvbnNlQm9keSA9PiB7XG4gIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYTUxQYXJzZXIoeyByZW1vdmVOU1ByZWZpeDogdHJ1ZSwgcGFyc2VBdHRyaWJ1dGVWYWx1ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIHhtbFBhcnNlci5wYXJzZShkYXRhKT8uRW52ZWxvcGU/LkJvZHk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJPYmopID0+ICh7XG4gIFByb3BlcnR5OiBmaWx0ZXIubGVmdE9wZXJhbmQsXG4gIFNpbXBsZU9wZXJhdG9yOiAnZXF1YWxzJyxcbiAgVmFsdWU6IGZpbHRlci5yaWdodE9wZXJhbmQsXG4gICdAX3hzaTp0eXBlJzogJ1NpbXBsZUZpbHRlclBhcnQnLFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRVcmwgPSAoc3ViRG9tYWluOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgYGh0dHBzOi8vJHtzdWJEb21haW59LnJlc3QubWFya2V0aW5nY2xvdWRhcGlzLmNvbWA7XG5cbmV4cG9ydCBjb25zdCBpc0V4cGlyZWQgPSAoYXV0aE9iamVjdDogQXV0aE9iamVjdCk6IGJvb2xlYW4gPT4ge1xuICBsZXQgZXhwaXJlZCA9IGZhbHNlO1xuICAvLyBpZiBjdXJyZW50IGF0b21pYyB0aW1lIGlzIGVxdWFsIG9yIGFmdGVyIGV4cCwgb3Igd2UgZG9uJ3QgaGF2ZSBhIHRva2VuLCByZXR1cm4gdHJ1ZVxuICBpZiAoXG4gICAgKGF1dGhPYmplY3QuZXhwaXJhdGlvbiAmJiBhdXRoT2JqZWN0LmV4cGlyYXRpb24gPD0gcHJvY2Vzcy5ocnRpbWUoKVswXSkgfHxcbiAgICAhYXV0aE9iamVjdC5hY2Nlc3NfdG9rZW5cbiAgKSB7XG4gICAgZXhwaXJlZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gZXhwaXJlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUb2tlbiA9IGFzeW5jIChhdXRoT2JqZWN0OiBBdXRoT2JqZWN0KTogUHJvbWlzZTxBdXRoT2JqZWN0PiA9PiB7XG4gIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgZ3JhbnRfdHlwZTogJ2NsaWVudF9jcmVkZW50aWFscycsXG4gICAgY2xpZW50X2lkOiBhdXRoT2JqZWN0LmNsaWVudElkLFxuICAgIGNsaWVudF9zZWNyZXQ6IGF1dGhPYmplY3QuY2xpZW50U2VjcmV0LFxuICB9O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcyh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgYmFzZVVSTDogYGh0dHBzOi8vJHthdXRoT2JqZWN0LnN1YkRvbWFpbn0uYXV0aC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tYCxcbiAgICB1cmw6ICcvdjIvdG9rZW4nLFxuICAgIGRhdGE6IHBheWxvYWQsXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihhdXRoT2JqZWN0LCByZXN1bHQuZGF0YSwge1xuICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyByZXN1bHQuZGF0YS5leHBpcmVzX2luLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB4bWxCdWlsZGVyID0gKFxuICBvYmplY3Q6IHN0cmluZyxcbiAgcHJvcGVydGllczogc3RyaW5nW10sXG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nLFxuICBmaWx0ZXI/OiBhbnksXG4pID0+IHtcbiAgY29uc3QganNvblRvWG1sID0gbmV3IFhNTEJ1aWxkZXIoeyBpZ25vcmVBdHRyaWJ1dGVzOiBmYWxzZSB9KTtcbiAgY29uc3QgaGVhZGVycyA9IHsgZnVlbG9hdXRoOiB7ICcjdGV4dCc6IGFjY2Vzc1Rva2VuIH0gfTtcbiAgY29uc3QgcmV0cmlldmVSZXE6IHtcbiAgICBPYmplY3RUeXBlOiBzdHJpbmc7XG4gICAgUHJvcGVydGllczogc3RyaW5nW107XG4gICAgRmlsdGVyPzogYW55O1xuICB9ID0ge1xuICAgIE9iamVjdFR5cGU6IG9iamVjdCxcbiAgICBQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuICB9O1xuICBpZiAoZmlsdGVyKSB7XG4gICAgcmV0cmlldmVSZXEuRmlsdGVyID0gZmlsdGVyO1xuICB9XG4gIHJldHVybiBqc29uVG9YbWwuYnVpbGQoe1xuICAgIEVudmVsb3BlOiB7XG4gICAgICBCb2R5OiB7XG4gICAgICAgIFJldHJpZXZlUmVxdWVzdE1zZzoge1xuICAgICAgICAgICdAX3htbG5zJzogJ2h0dHA6Ly9leGFjdHRhcmdldC5jb20vd3NkbC9wYXJ0bmVyQVBJJyxcbiAgICAgICAgICBSZXRyaWV2ZVJlcXVlc3Q6IHJldHJpZXZlUmVxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdAX3htbG5zJzogJ2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvJyxcbiAgICAgICdAX3htbG5zOnhzaSc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZScsXG4gICAgICBIZWFkZXI6IGhlYWRlcnMsXG4gICAgfSxcbiAgfSk7XG59O1xuIl19