UNPKG

test-this-package-today

Version:

Event Inc is a fully managed event bus lets you send and receive data across mission-critical cloud apps, databases and warehouses.

159 lines 7.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getParserApi = exports.listSourcesApi = exports.subscribeEventsApi = exports.deleteSourceConnectionApi = exports.createSourceConnectionApi = void 0; const tslib_1 = require("tslib"); const utils_1 = require("@event-inc/utils"); const ramda_1 = require("ramda"); const parser_1 = require("../logic/parser"); const configs_apis_1 = require("./configs.apis"); const createSourceConnectionApi = (headers, url, payload) => { const authFormData = payload.type === 'webhook' || payload.type === 'nodejs' || payload.type === 'rutter' ? { name: payload.label, } : Object.assign(Object.assign({}, payload.config), { name: payload.label }); const integrationDefinitionId = (0, utils_1.getIntegrationDefinitionId)(payload.type, 'source'); let updatedAuthFormData = authFormData; if (payload.type === 'ftp') { const { FTP_PARSER } = payload.config; const stringParser = FTP_PARSER; if (["csv", "json"].includes(stringParser)) { updatedAuthFormData.FTP_EXTRACTOR_FILE_PARSER = (0, parser_1.getDefaultParser)(stringParser); } else { updatedAuthFormData.FTP_EXTRACTOR_FILE_PARSER = FTP_PARSER.toString(); } } const finalPayload = { integrationDefinitionId, authFormData: updatedAuthFormData, type: payload.type, group: payload.group, name: payload.label, key: payload.key, }; return (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/create`, data: finalPayload, headers, }); }; exports.createSourceConnectionApi = createSourceConnectionApi; const deleteSourceConnectionApi = (headers, url, payload) => { const { key, id } = payload; (0, utils_1.checkIfKeyOrIdExists)(id, key, 'Must provide either id or key to delete a source'); return (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/delete`, data: { key, integrationId: id, }, headers, }); }; exports.deleteSourceConnectionApi = deleteSourceConnectionApi; const subscribeEventsApi = (headers, url, payload) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { events, type, key, id } = payload; (0, utils_1.checkIfKeyOrIdExists)(id, key, 'Must provide either id or key to set events for a source'); if (type === 'nodejs') { const eventList = events.join(','); return (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/add-custom-events`, data: { key, id, events: eventList, }, headers, }); } const result = yield (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/update-subscribed-events`, data: { events, key, integrationId: id, }, headers, }); const listIntegration = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const response = yield (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/list`, headers, data: { query: { _id: id, key, }, }, }); const { data } = (0, utils_1.matchResultAndHandleHttpError)(response, ramda_1.identity); return data; }); const poll = function (startTime, timeout) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; return tslib_1.__awaiter(this, void 0, void 0, function* () { let result = yield listIntegration(); while (['pending', 'processing'].includes((_e = (_d = (_c = (_b = (_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.states) === null || _c === void 0 ? void 0 : _c.webhooks) === null || _d === void 0 ? void 0 : _d.all) === null || _e === void 0 ? void 0 : _e.state)) { if (Date.now() - startTime > timeout) { (0, utils_1.handleBuildableError)((0, utils_1.BError)(false, 'http_408', 'Connection timed out', 'client-destination', false)); } yield wait(); result = yield listIntegration(); } if (((_k = (_j = (_h = (_g = (_f = result === null || result === void 0 ? void 0 : result.rows) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.states) === null || _h === void 0 ? void 0 : _h.webhooks) === null || _j === void 0 ? void 0 : _j.all) === null || _k === void 0 ? void 0 : _k.state) !== 'complete') { (0, utils_1.handleBuildableError)((0, utils_1.BError)(false, 'http_500', (_q = (_p = (_o = (_m = (_l = result === null || result === void 0 ? void 0 : result.rows) === null || _l === void 0 ? void 0 : _l[0]) === null || _m === void 0 ? void 0 : _m.states) === null || _o === void 0 ? void 0 : _o.webhooks) === null || _p === void 0 ? void 0 : _p.all) === null || _q === void 0 ? void 0 : _q.message, 'client-destination', false)); } return result; }); }; const wait = function (ms = 2000) { return new Promise((resolve) => { setTimeout(resolve, ms); }); }; const startTime = Date.now(); const timeout = 60000; yield poll(startTime, timeout); return result; }); exports.subscribeEventsApi = subscribeEventsApi; const listSourcesApi = (headers, url, payload) => { return (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/list`, data: Object.assign(Object.assign({}, payload), { query: Object.assign(Object.assign({}, payload === null || payload === void 0 ? void 0 : payload.query), { _id: { $regex: 'conn_src', } }) }), headers, }); }; exports.listSourcesApi = listSourcesApi; const getParserApi = (headers, url, payload) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { id, key } = payload; const response = yield (0, utils_1.makeHttpNetworkCall)({ method: 'POST', url: `${url}/${configs_apis_1.version1}/integrations/list`, data: { query: { _id: id, key, type: 'ftp', }, fields: ["parser"] }, headers, }); const { data } = (0, utils_1.matchResultAndHandleHttpError)(response, ramda_1.identity); if (data.rows.length > 0) { return data.rows[0].parser || (0, parser_1.getDefaultParser)("csv"); } return "Not found"; }); exports.getParserApi = getParserApi; //# sourceMappingURL=source.api.js.map