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
JavaScript
;
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