@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
65 lines • 8.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
const base_sdk_1 = require("../common/base-sdk");
const REGION_URLS = {
US: 'https://api.customer.io/v1',
EU: 'https://api-eu.customer.io/v1',
};
class CustomerIOSegment extends base_sdk_1.BaseSDK {
// eslint-disable-next-line class-methods-use-this
validateAuthObject(authObject) {
if (!authObject?.appApiKey || typeof authObject.appApiKey !== 'string') {
throw new Error('appApiKey is required and must be a string');
}
}
buildRequestUrl(endpoint) {
const region = this.config?.region ?? 'US';
const baseUrl = REGION_URLS[region];
const cleanEndpoint = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
return `${baseUrl}${cleanEndpoint}`;
}
getHeaders() {
return {
Accept: 'application/json',
Authorization: `Bearer ${this.authObject.appApiKey}`,
};
}
/**
* This method fetches the segments. If unable to fetch the segments, it returns a RestError.
* ref: https://docs.customer.io/api/app/#operation/listSegments
* @param statTags - Optional stat tags for metrics and logging
* @returns
*/
async getSegments(statTags) {
const customStatTags = {
...statTags,
endpointPath: `/segments`,
};
const resp = await this.get('/segments', customStatTags);
if (resp.type === 'success') {
return resp.responseBody;
}
throw new utils_1.RestError(resp.message, resp.statusCode);
}
/**
* This method creates a manual segment. It requires the segment body. The method returns the created segment. If the manual segment is not created, it returns a RestError.
* ref: https://docs.customer.io/api/app/#operation/createManSegment
* @param body CreateSegment fields
* @param statTags - Optional stat tags for metrics and logging
* @returns
*/
async createSegment(body, statTags) {
const customStatTags = {
...statTags,
endpointPath: `/segments`,
};
const resp = await this.post('/segments', body, customStatTags);
if (resp.type === 'success') {
return resp.responseBody;
}
throw new utils_1.RestError(resp.message, resp.statusCode);
}
}
exports.default = CustomerIOSegment;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9jdXN0b21lcmlvX2F1ZGllbmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsbUNBQW9DO0FBRXBDLGlEQUE2QztBQUc3QyxNQUFNLFdBQVcsR0FBcUM7SUFDcEQsRUFBRSxFQUFFLDRCQUE0QjtJQUNoQyxFQUFFLEVBQUUsK0JBQStCO0NBQ3BDLENBQUM7QUFFRixNQUFxQixpQkFBa0IsU0FBUSxrQkFBcUM7SUFDbEYsa0RBQWtEO0lBQ2xELGtCQUFrQixDQUFDLFVBQXNCO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLE9BQU8sVUFBVSxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2RSxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFFUyxlQUFlLENBQUMsUUFBZ0I7UUFDeEMsTUFBTSxNQUFNLEdBQXFCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQztRQUM3RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNFLE9BQU8sR0FBRyxPQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVTLFVBQVU7UUFDbEIsT0FBTztZQUNMLE1BQU0sRUFBRSxrQkFBa0I7WUFDMUIsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7U0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBbUI7UUFDbkMsTUFBTSxjQUFjLEdBQWE7WUFDL0IsR0FBRyxRQUFRO1lBQ1gsWUFBWSxFQUFFLFdBQVc7U0FDMUIsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFxQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQzNELFdBQVcsRUFDWCxjQUFjLENBQ2YsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDM0IsQ0FBQztRQUNELE1BQU0sSUFBSSxpQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUNqQixJQUF1QixFQUN2QixRQUFtQjtRQUVuQixNQUFNLGNBQWMsR0FBYTtZQUMvQixHQUFHLFFBQVE7WUFDWCxZQUFZLEVBQUUsV0FBVztTQUMxQixDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQXVDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FDOUQsV0FBVyxFQUNYLElBQUksRUFDSixjQUFjLENBQ2YsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDM0IsQ0FBQztRQUNELE1BQU0sSUFBSSxpQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQXBFRCxvQ0FvRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRoT2JqZWN0LFxuICBDcmVhdGVTZWdtZW50Qm9keSxcbiAgQ3JlYXRlU2VnbWVudFJlc3BvbnNlLFxuICBHZXRTZWdtZW50c1Jlc3BvbnNlLFxuICBDdXN0b21lcklPQ29uZmlnLFxuICBDdXN0b21lcklPUmVnaW9uLFxufSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgUmVzdEVycm9yIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL25ldHdvcmsnO1xuaW1wb3J0IHsgQmFzZVNESyB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLXNkayc7XG5pbXBvcnQgeyBTdGF0VGFncyB9IGZyb20gJy4uLy4uL25ldHdvcmsvY2xpZW50cy90eXBlcyc7XG5cbmNvbnN0IFJFR0lPTl9VUkxTOiBSZWNvcmQ8Q3VzdG9tZXJJT1JlZ2lvbiwgc3RyaW5nPiA9IHtcbiAgVVM6ICdodHRwczovL2FwaS5jdXN0b21lci5pby92MScsXG4gIEVVOiAnaHR0cHM6Ly9hcGktZXUuY3VzdG9tZXIuaW8vdjEnLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3VzdG9tZXJJT1NlZ21lbnQgZXh0ZW5kcyBCYXNlU0RLPEF1dGhPYmplY3QsIEN1c3RvbWVySU9Db25maWc+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgdmFsaWRhdGVBdXRoT2JqZWN0KGF1dGhPYmplY3Q6IEF1dGhPYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoIWF1dGhPYmplY3Q/LmFwcEFwaUtleSB8fCB0eXBlb2YgYXV0aE9iamVjdC5hcHBBcGlLZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcEFwaUtleSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlcXVlc3RVcmwoZW5kcG9pbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVnaW9uOiBDdXN0b21lcklPUmVnaW9uID0gdGhpcy5jb25maWc/LnJlZ2lvbiA/PyAnVVMnO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBSRUdJT05fVVJMU1tyZWdpb25dO1xuICAgIGNvbnN0IGNsZWFuRW5kcG9pbnQgPSBlbmRwb2ludC5zdGFydHNXaXRoKCcvJykgPyBlbmRwb2ludCA6IGAvJHtlbmRwb2ludH1gO1xuICAgIHJldHVybiBgJHtiYXNlVXJsfSR7Y2xlYW5FbmRwb2ludH1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEhlYWRlcnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXV0aE9iamVjdC5hcHBBcGlLZXl9YCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZldGNoZXMgdGhlIHNlZ21lbnRzLiBJZiB1bmFibGUgdG8gZmV0Y2ggdGhlIHNlZ21lbnRzLCBpdCByZXR1cm5zIGEgUmVzdEVycm9yLlxuICAgKiByZWY6IGh0dHBzOi8vZG9jcy5jdXN0b21lci5pby9hcGkvYXBwLyNvcGVyYXRpb24vbGlzdFNlZ21lbnRzXG4gICAqIEBwYXJhbSBzdGF0VGFncyAtIE9wdGlvbmFsIHN0YXQgdGFncyBmb3IgbWV0cmljcyBhbmQgbG9nZ2luZ1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0U2VnbWVudHMoc3RhdFRhZ3M/OiBTdGF0VGFncyk6IFByb21pc2U8R2V0U2VnbWVudHNSZXNwb25zZT4ge1xuICAgIGNvbnN0IGN1c3RvbVN0YXRUYWdzOiBTdGF0VGFncyA9IHtcbiAgICAgIC4uLnN0YXRUYWdzLFxuICAgICAgZW5kcG9pbnRQYXRoOiBgL3NlZ21lbnRzYCxcbiAgICB9O1xuICAgIGNvbnN0IHJlc3A6IEFwaVJlc3BvbnNlPEdldFNlZ21lbnRzUmVzcG9uc2U+ID0gYXdhaXQgdGhpcy5nZXQ8R2V0U2VnbWVudHNSZXNwb25zZT4oXG4gICAgICAnL3NlZ21lbnRzJyxcbiAgICAgIGN1c3RvbVN0YXRUYWdzLFxuICAgICk7XG4gICAgaWYgKHJlc3AudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICByZXR1cm4gcmVzcC5yZXNwb25zZUJvZHk7XG4gICAgfVxuICAgIHRocm93IG5ldyBSZXN0RXJyb3IocmVzcC5tZXNzYWdlLCByZXNwLnN0YXR1c0NvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBtYW51YWwgc2VnbWVudC4gSXQgcmVxdWlyZXMgdGhlIHNlZ21lbnQgYm9keS4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjcmVhdGVkIHNlZ21lbnQuIElmIHRoZSBtYW51YWwgc2VnbWVudCBpcyBub3QgY3JlYXRlZCwgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogcmVmOiBodHRwczovL2RvY3MuY3VzdG9tZXIuaW8vYXBpL2FwcC8jb3BlcmF0aW9uL2NyZWF0ZU1hblNlZ21lbnRcbiAgICogQHBhcmFtIGJvZHkgQ3JlYXRlU2VnbWVudCBmaWVsZHNcbiAgICogQHBhcmFtIHN0YXRUYWdzIC0gT3B0aW9uYWwgc3RhdCB0YWdzIGZvciBtZXRyaWNzIGFuZCBsb2dnaW5nXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3luYyBjcmVhdGVTZWdtZW50KFxuICAgIGJvZHk6IENyZWF0ZVNlZ21lbnRCb2R5LFxuICAgIHN0YXRUYWdzPzogU3RhdFRhZ3MsXG4gICk6IFByb21pc2U8Q3JlYXRlU2VnbWVudFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY3VzdG9tU3RhdFRhZ3M6IFN0YXRUYWdzID0ge1xuICAgICAgLi4uc3RhdFRhZ3MsXG4gICAgICBlbmRwb2ludFBhdGg6IGAvc2VnbWVudHNgLFxuICAgIH07XG4gICAgY29uc3QgcmVzcDogQXBpUmVzcG9uc2U8Q3JlYXRlU2VnbWVudFJlc3BvbnNlPiA9IGF3YWl0IHRoaXMucG9zdDxDcmVhdGVTZWdtZW50UmVzcG9uc2U+KFxuICAgICAgJy9zZWdtZW50cycsXG4gICAgICBib2R5LFxuICAgICAgY3VzdG9tU3RhdFRhZ3MsXG4gICAgKTtcbiAgICBpZiAocmVzcC50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHJldHVybiByZXNwLnJlc3BvbnNlQm9keTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFJlc3RFcnJvcihyZXNwLm1lc3NhZ2UsIHJlc3Auc3RhdHVzQ29kZSk7XG4gIH1cbn1cbiJdfQ==