@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
93 lines • 11.2 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUF3RDtBQUN4RCxrREFBMEM7QUFHMUMsTUFBYSxTQUFVLFNBQVEsS0FBSztJQU9sQyxZQUFZLEVBQWlDO1FBQzNDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWJELDhCQWFDO0FBRUQsTUFBYSxTQUFVLFNBQVEsS0FBSztJQU9sQyxZQUFZLEVBQU87UUFDakIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWJELDhCQWFDO0FBRU0sTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQW9CLEVBQUU7SUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSwyQkFBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJ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VSxjQWdDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYTUxCdWlsZGVyLCBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBBdXRoT2JqZWN0LCBGaWx0ZXJPYmosIFNGTUNFcnJvclJlc3BvbnNlLCBTb2FwUmVzcG9uc2VCb2R5IH0gZnJvbSAnLi90eXBlJztcblxuZXhwb3J0IGNsYXNzIFJlc3RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgZXJyb3Jjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgZG9jdW1lbnRhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXR1c0NvZGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihleDogQXhpb3NFcnJvcjxTRk1DRXJyb3JSZXNwb25zZT4pIHtcbiAgICBzdXBlcihleC5yZXNwb25zZT8uZGF0YT8ubWVzc2FnZSk7XG4gICAgdGhpcy5lcnJvcmNvZGUgPSBleC5yZXNwb25zZT8uZGF0YS5lcnJvcmNvZGU7XG4gICAgdGhpcy5kb2N1bWVudGF0aW9uID0gZXgucmVzcG9uc2U/LmRhdGEuZG9jdW1lbnRhdGlvbjtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBleC5yZXNwb25zZT8uc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2FwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcblxuICBkYXRhOiBzdHJpbmc7XG5cbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGV4OiBhbnkpIHtcbiAgICBzdXBlcihleC5tZXNzYWdlKTtcbiAgICB0aGlzLmNvZGUgPSBleC5jb2RlO1xuICAgIHRoaXMuZGF0YSA9IGV4LnJlc3BvbnNlPy5kYXRhO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IGV4LnJlc3BvbnNlPy5zdGF0dXM7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlWE1MID0gKGRhdGE6IGFueSk6IFNvYXBSZXNwb25zZUJvZHkgPT4ge1xuICBjb25zdCB4bWxQYXJzZXIgPSBuZXcgWE1MUGFyc2VyKHsgcmVtb3ZlTlNQcmVmaXg6IHRydWUsIHBhcnNlQXR0cmlidXRlVmFsdWU6IHRydWUgfSk7XG4gIHJldHVybiB4bWxQYXJzZXIucGFyc2UoZGF0YSk/LkVudmVsb3BlPy5Cb2R5O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyT2JqKSA9PiAoe1xuICBQcm9wZXJ0eTogZmlsdGVyLmxlZnRPcGVyYW5kLFxuICBTaW1wbGVPcGVyYXRvcjogJ2VxdWFscycsXG4gIFZhbHVlOiBmaWx0ZXIucmlnaHRPcGVyYW5kLFxuICAnQF94c2k6dHlwZSc6ICdTaW1wbGVGaWx0ZXJQYXJ0Jyxcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VXJsID0gKHN1YkRvbWFpbjogc3RyaW5nKTogc3RyaW5nID0+XG4gIGBodHRwczovLyR7c3ViRG9tYWlufS5yZXN0Lm1hcmtldGluZ2Nsb3VkYXBpcy5jb21gO1xuXG5leHBvcnQgY29uc3QgaXNFeHBpcmVkID0gKGF1dGhPYmplY3Q6IEF1dGhPYmplY3QpOiBib29sZWFuID0+IHtcbiAgbGV0IGV4cGlyZWQgPSBmYWxzZTtcbiAgLy8gaWYgY3VycmVudCBhdG9taWMgdGltZSBpcyBlcXVhbCBvciBhZnRlciBleHAsIG9yIHdlIGRvbid0IGhhdmUgYSB0b2tlbiwgcmV0dXJuIHRydWVcbiAgaWYgKFxuICAgIChhdXRoT2JqZWN0LmV4cGlyYXRpb24gJiYgYXV0aE9iamVjdC5leHBpcmF0aW9uIDw9IHByb2Nlc3MuaHJ0aW1lKClbMF0pIHx8XG4gICAgIWF1dGhPYmplY3QuYWNjZXNzX3Rva2VuXG4gICkge1xuICAgIGV4cGlyZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGV4cGlyZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VG9rZW4gPSBhc3luYyAoYXV0aE9iamVjdDogQXV0aE9iamVjdCk6IFByb21pc2U8QXV0aE9iamVjdD4gPT4ge1xuICBjb25zdCBwYXlsb2FkID0ge1xuICAgIGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnLFxuICAgIGNsaWVudF9pZDogYXV0aE9iamVjdC5jbGllbnRJZCxcbiAgICBjbGllbnRfc2VjcmV0OiBhdXRoT2JqZWN0LmNsaWVudFNlY3JldCxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3Moe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIGJhc2VVUkw6IGBodHRwczovLyR7YXV0aE9iamVjdC5zdWJEb21haW59LmF1dGgubWFya2V0aW5nY2xvdWRhcGlzLmNvbWAsXG4gICAgdXJsOiAnL3YyL3Rva2VuJyxcbiAgICBkYXRhOiBwYXlsb2FkLFxuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aE9iamVjdCwgcmVzdWx0LmRhdGEsIHtcbiAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgcmVzdWx0LmRhdGEuZXhwaXJlc19pbixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgeG1sQnVpbGRlciA9IChcbiAgb2JqZWN0OiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBhY2Nlc3NUb2tlbj86IHN0cmluZyxcbiAgZmlsdGVyPzogYW55LFxuKSA9PiB7XG4gIGNvbnN0IGpzb25Ub1htbCA9IG5ldyBYTUxCdWlsZGVyKHsgaWdub3JlQXR0cmlidXRlczogZmFsc2UgfSk7XG4gIGNvbnN0IGhlYWRlcnMgPSB7IGZ1ZWxvYXV0aDogeyAnI3RleHQnOiBhY2Nlc3NUb2tlbiB9IH07XG4gIGNvbnN0IHJldHJpZXZlUmVxOiB7XG4gICAgT2JqZWN0VHlwZTogc3RyaW5nO1xuICAgIFByb3BlcnRpZXM6IHN0cmluZ1tdO1xuICAgIEZpbHRlcj86IGFueTtcbiAgfSA9IHtcbiAgICBPYmplY3RUeXBlOiBvYmplY3QsXG4gICAgUHJvcGVydGllczogcHJvcGVydGllcyxcbiAgfTtcbiAgaWYgKGZpbHRlcikge1xuICAgIHJldHJpZXZlUmVxLkZpbHRlciA9IGZpbHRlcjtcbiAgfVxuICByZXR1cm4ganNvblRvWG1sLmJ1aWxkKHtcbiAgICBFbnZlbG9wZToge1xuICAgICAgQm9keToge1xuICAgICAgICBSZXRyaWV2ZVJlcXVlc3RNc2c6IHtcbiAgICAgICAgICAnQF94bWxucyc6ICdodHRwOi8vZXhhY3R0YXJnZXQuY29tL3dzZGwvcGFydG5lckFQSScsXG4gICAgICAgICAgUmV0cmlldmVSZXF1ZXN0OiByZXRyaWV2ZVJlcSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnQF94bWxucyc6ICdodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLycsXG4gICAgICAnQF94bWxuczp4c2knOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuICAgICAgSGVhZGVyOiBoZWFkZXJzLFxuICAgIH0sXG4gIH0pO1xufTtcbiJdfQ==