UNPKG

@rudderstack/integrations-lib

Version:

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

80 lines 11.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const base_sdk_1 = require("../common/base-sdk"); const config_1 = require("./config"); /** * CriteoAudience SDK for managing audience segments in Criteo * @class */ class CriteoAudience extends base_sdk_1.BaseSDK { // eslint-disable-next-line class-methods-use-this validateAuthObject(authObject) { if (!authObject) { throw new Error('authObject is required.'); } if (!authObject.accessToken) { throw new Error('Criteo Audience accessToken is required.'); } if (!authObject.refreshAccessTokenFunc) { throw new Error('Criteo Audience a refresh access token function is required.'); } } // eslint-disable-next-line class-methods-use-this buildRequestUrl(endpoint) { // Ensure endpoint starts with / const cleanEndpoint = endpoint.startsWith('/') ? endpoint : `/${endpoint}`; return `${config_1.BASE_URL}${cleanEndpoint}`; } getHeaders() { return { authorization: `Bearer ${this.authObject.accessToken}`, accept: 'application/json', 'content-type': 'application/json', }; } // eslint-disable-next-line class-methods-use-this shouldRetryOnError(response) { // Retry on 401 (unauthorized) errors for token refresh if (response.type === 'application-error') { return (response.statusCode === 401 && (response.responseBody.errors[0].code === 'authorization-token-invalid' || response.responseBody.errors[0].code === 'authorization-token-expired')); } return false; } async refreshToken() { try { const accessToken = await this.authObject.refreshAccessTokenFunc(); this.authObject.accessToken = accessToken; } catch (error) { throw new Error(`Unable to refresh token, with error: ${error}`); } } /** * Creates a new audience segment in Criteo * @param {AudienceSegmentBody} audienceSegmentBody - Audience segment data * @param {StatTags} statTags - Optional stat tags for metrics and logging * @returns {Promise<AudienceSegmentData>} Created audience segment data * @throws {Error} If audience segment creation fails */ async createAudienceSegment(audienceSegmentBody, statTags) { const customStatTags = { ...statTags, endpointPath: `/marketing-solutions/audience-segments/create`, }; const createAudienceSegmentResponse = await this.executeRequestWithTokenRefreshAttempts('post', `/marketing-solutions/audience-segments/create`, audienceSegmentBody, customStatTags); if (createAudienceSegmentResponse.type === 'success') { const { data } = createAudienceSegmentResponse.responseBody; if (data && data.length > 0) { return data[0]; } } const errorMessage = createAudienceSegmentResponse.type === 'client-error' ? createAudienceSegmentResponse.message : JSON.stringify(createAudienceSegmentResponse.responseBody); throw new Error(`Failed to create audience segment, with error: ${errorMessage}`); } } exports.default = CriteoAudience; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVvQXVkaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9jcml0ZW9BdWRpZW5jZS9jcml0ZW9BdWRpZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLGlEQUE2QztBQUM3QyxxQ0FBb0M7QUFTcEM7OztHQUdHO0FBQ0gsTUFBcUIsY0FBZSxTQUFRLGtCQUFpQztJQUMzRSxrREFBa0Q7SUFDbEQsa0JBQWtCLENBQUMsVUFBc0I7UUFDdkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7SUFFRCxrREFBa0Q7SUFDeEMsZUFBZSxDQUFDLFFBQWdCO1FBQ3hDLGdDQUFnQztRQUNoQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0UsT0FBTyxHQUFHLGlCQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVTLFVBQVU7UUFDbEIsT0FBTztZQUNMLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO1lBQ3RELE1BQU0sRUFBRSxrQkFBa0I7WUFDMUIsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxrQkFBa0IsQ0FBQyxRQUE4QjtRQUMvQyx1REFBdUQ7UUFDdkQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUNMLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRztnQkFDM0IsQ0FBRSxRQUFRLENBQUMsWUFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLDZCQUE2QjtvQkFDN0UsUUFBUSxDQUFDLFlBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyw2QkFBNkIsQ0FBQyxDQUNuRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLEtBQUssQ0FBQyxZQUFZO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUM1QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLG1CQUF3QyxFQUN4QyxRQUFtQjtRQUVuQixNQUFNLGNBQWMsR0FBYTtZQUMvQixHQUFHLFFBQVE7WUFDWCxZQUFZLEVBQUUsK0NBQStDO1NBQzlELENBQUM7UUFDRixNQUFNLDZCQUE2QixHQUNqQyxNQUFNLElBQUksQ0FBQyxzQ0FBc0MsQ0FDL0MsTUFBTSxFQUNOLCtDQUErQyxFQUMvQyxtQkFBbUIsRUFDbkIsY0FBYyxDQUNmLENBQUM7UUFDSixJQUFJLDZCQUE2QixDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsNkJBQTZCLENBQUMsWUFBWSxDQUFDO1lBQzVELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQ2hCLDZCQUE2QixDQUFDLElBQUksS0FBSyxjQUFjO1lBQ25ELENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPO1lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWpFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELFlBQVksRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztDQUNGO0FBdkZELGlDQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaVJlc3BvbnNlLCBTdGF0VGFncyB9IGZyb20gJy4uLy4uL25ldHdvcmsvY2xpZW50cy90eXBlcyc7XG5pbXBvcnQgeyBCYXNlU0RLIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2Utc2RrJztcbmltcG9ydCB7IEJBU0VfVVJMIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQXV0aE9iamVjdCxcbiAgQXVkaWVuY2VTZWdtZW50Qm9keSxcbiAgQXVkaWVuY2VTZWdtZW50UmVzcG9uc2UsXG4gIEF1ZGllbmNlU2VnbWVudERhdGEsXG4gIENyaXRlb0NvbmZpZyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ3JpdGVvQXVkaWVuY2UgU0RLIGZvciBtYW5hZ2luZyBhdWRpZW5jZSBzZWdtZW50cyBpbiBDcml0ZW9cbiAqIEBjbGFzc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDcml0ZW9BdWRpZW5jZSBleHRlbmRzIEJhc2VTREs8QXV0aE9iamVjdCwgQ3JpdGVvQ29uZmlnPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIHZhbGlkYXRlQXV0aE9iamVjdChhdXRoT2JqZWN0OiBBdXRoT2JqZWN0KTogdm9pZCB7XG4gICAgaWYgKCFhdXRoT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhPYmplY3QgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuICAgIGlmICghYXV0aE9iamVjdC5hY2Nlc3NUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDcml0ZW8gQXVkaWVuY2UgYWNjZXNzVG9rZW4gaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuICAgIGlmICghYXV0aE9iamVjdC5yZWZyZXNoQWNjZXNzVG9rZW5GdW5jKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NyaXRlbyBBdWRpZW5jZSBhIHJlZnJlc2ggYWNjZXNzIHRva2VuIGZ1bmN0aW9uIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIHByb3RlY3RlZCBidWlsZFJlcXVlc3RVcmwoZW5kcG9pbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gRW5zdXJlIGVuZHBvaW50IHN0YXJ0cyB3aXRoIC9cbiAgICBjb25zdCBjbGVhbkVuZHBvaW50ID0gZW5kcG9pbnQuc3RhcnRzV2l0aCgnLycpID8gZW5kcG9pbnQgOiBgLyR7ZW5kcG9pbnR9YDtcbiAgICByZXR1cm4gYCR7QkFTRV9VUkx9JHtjbGVhbkVuZHBvaW50fWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SGVhZGVycygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXV0aE9iamVjdC5hY2Nlc3NUb2tlbn1gLFxuICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBzaG91bGRSZXRyeU9uRXJyb3IocmVzcG9uc2U6IEFwaVJlc3BvbnNlPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgLy8gUmV0cnkgb24gNDAxICh1bmF1dGhvcml6ZWQpIGVycm9ycyBmb3IgdG9rZW4gcmVmcmVzaFxuICAgIGlmIChyZXNwb25zZS50eXBlID09PSAnYXBwbGljYXRpb24tZXJyb3InKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICByZXNwb25zZS5zdGF0dXNDb2RlID09PSA0MDEgJiZcbiAgICAgICAgKChyZXNwb25zZS5yZXNwb25zZUJvZHkgYXMgYW55KS5lcnJvcnNbMF0uY29kZSA9PT0gJ2F1dGhvcml6YXRpb24tdG9rZW4taW52YWxpZCcgfHxcbiAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VCb2R5IGFzIGFueSkuZXJyb3JzWzBdLmNvZGUgPT09ICdhdXRob3JpemF0aW9uLXRva2VuLWV4cGlyZWQnKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCB0aGlzLmF1dGhPYmplY3QucmVmcmVzaEFjY2Vzc1Rva2VuRnVuYygpO1xuICAgICAgdGhpcy5hdXRoT2JqZWN0LmFjY2Vzc1Rva2VuID0gYWNjZXNzVG9rZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlZnJlc2ggdG9rZW4sIHdpdGggZXJyb3I6ICR7ZXJyb3J9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYXVkaWVuY2Ugc2VnbWVudCBpbiBDcml0ZW9cbiAgICogQHBhcmFtIHtBdWRpZW5jZVNlZ21lbnRCb2R5fSBhdWRpZW5jZVNlZ21lbnRCb2R5IC0gQXVkaWVuY2Ugc2VnbWVudCBkYXRhXG4gICAqIEBwYXJhbSB7U3RhdFRhZ3N9IHN0YXRUYWdzIC0gT3B0aW9uYWwgc3RhdCB0YWdzIGZvciBtZXRyaWNzIGFuZCBsb2dnaW5nXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEF1ZGllbmNlU2VnbWVudERhdGE+fSBDcmVhdGVkIGF1ZGllbmNlIHNlZ21lbnQgZGF0YVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYXVkaWVuY2Ugc2VnbWVudCBjcmVhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUF1ZGllbmNlU2VnbWVudChcbiAgICBhdWRpZW5jZVNlZ21lbnRCb2R5OiBBdWRpZW5jZVNlZ21lbnRCb2R5LFxuICAgIHN0YXRUYWdzPzogU3RhdFRhZ3MsXG4gICk6IFByb21pc2U8QXVkaWVuY2VTZWdtZW50RGF0YT4ge1xuICAgIGNvbnN0IGN1c3RvbVN0YXRUYWdzOiBTdGF0VGFncyA9IHtcbiAgICAgIC4uLnN0YXRUYWdzLFxuICAgICAgZW5kcG9pbnRQYXRoOiBgL21hcmtldGluZy1zb2x1dGlvbnMvYXVkaWVuY2Utc2VnbWVudHMvY3JlYXRlYCxcbiAgICB9O1xuICAgIGNvbnN0IGNyZWF0ZUF1ZGllbmNlU2VnbWVudFJlc3BvbnNlID1cbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3RXaXRoVG9rZW5SZWZyZXNoQXR0ZW1wdHM8QXVkaWVuY2VTZWdtZW50UmVzcG9uc2U+KFxuICAgICAgICAncG9zdCcsXG4gICAgICAgIGAvbWFya2V0aW5nLXNvbHV0aW9ucy9hdWRpZW5jZS1zZWdtZW50cy9jcmVhdGVgLFxuICAgICAgICBhdWRpZW5jZVNlZ21lbnRCb2R5LFxuICAgICAgICBjdXN0b21TdGF0VGFncyxcbiAgICAgICk7XG4gICAgaWYgKGNyZWF0ZUF1ZGllbmNlU2VnbWVudFJlc3BvbnNlLnR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBjcmVhdGVBdWRpZW5jZVNlZ21lbnRSZXNwb25zZS5yZXNwb25zZUJvZHk7XG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGRhdGFbMF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID1cbiAgICAgIGNyZWF0ZUF1ZGllbmNlU2VnbWVudFJlc3BvbnNlLnR5cGUgPT09ICdjbGllbnQtZXJyb3InXG4gICAgICAgID8gY3JlYXRlQXVkaWVuY2VTZWdtZW50UmVzcG9uc2UubWVzc2FnZVxuICAgICAgICA6IEpTT04uc3RyaW5naWZ5KGNyZWF0ZUF1ZGllbmNlU2VnbWVudFJlc3BvbnNlLnJlc3BvbnNlQm9keSk7XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgYXVkaWVuY2Ugc2VnbWVudCwgd2l0aCBlcnJvcjogJHtlcnJvck1lc3NhZ2V9YCk7XG4gIH1cbn1cbiJdfQ==