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.
126 lines • 5.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createOauthDestinationApi = exports.createOauthSourceApi = exports.createOauthConnectionApi = void 0;
const tslib_1 = require("tslib");
const oauthconnection_1 = require("../oauthconnection");
const utils_1 = require("@event-inc/utils");
const ramda_1 = require("ramda");
const configs_apis_1 = require("./configs.apis");
const createOauthConnectionApi = (headers, url, payload) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { type, config } = payload;
const { clientId, clientSecret, code, redirectUri } = config;
const oauthConnection = new oauthconnection_1.OauthConnection({
OAUTH_APP_CLIENT_ID: clientId,
OAUTH_APP_CLIENT_SECRET: clientSecret,
type,
});
const oauthDetails = oauthConnection.getOauthDetails();
const response = yield (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: oauthDetails.endpoint,
headers: oauthDetails.headers,
data: {
grant_type: 'authorization_code',
code: code,
redirect_uri: redirectUri,
},
});
const { data } = (0, utils_1.matchResultAndHandleHttpError)(response, ramda_1.identity);
const { access_token: accessToken, refresh_token: refreshToken } = data;
const sourceIntegration = yield (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: `${url}/${configs_apis_1.version1}/integrations/create`,
headers,
data: {
integrationDefinitionId: oauthDetails.sourceIntegrationDefinitionId,
name: payload.label,
group: payload.group,
authFormData: Object.assign({ name: payload.label }, oauthConnection.getOauthFormData({ accessToken, refreshToken })),
},
});
const { data: source } = (0, utils_1.matchResultAndHandleHttpError)(sourceIntegration, ramda_1.identity);
const destinationIntegration = yield (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: `${url}/${configs_apis_1.version1}/integrations/create`,
headers,
data: {
connectionBundleId: source === null || source === void 0 ? void 0 : source.connectionBundleId,
integrationDefinitionId: oauthDetails.destinationIntegrationDefinitionId,
name: payload.label,
group: payload.group,
authFormData: Object.assign({ name: payload.label }, oauthConnection.getOauthFormData({ accessToken, refreshToken })),
},
});
const { data: destination } = (0, utils_1.matchResultAndHandleHttpError)(destinationIntegration, ramda_1.identity);
return { source, destination };
});
exports.createOauthConnectionApi = createOauthConnectionApi;
const createOauthSourceApi = (headers, url, payload) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { type, config } = payload;
const { clientId, clientSecret, code, redirectUri } = config;
const oauthConnection = new oauthconnection_1.OauthConnection({
OAUTH_APP_CLIENT_ID: clientId,
OAUTH_APP_CLIENT_SECRET: clientSecret,
type,
});
const oauthDetails = oauthConnection.getOauthDetails();
const response = yield (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: oauthDetails.endpoint,
headers: oauthDetails.headers,
data: {
grant_type: 'authorization_code',
code: code,
redirect_uri: redirectUri,
},
});
const { data } = (0, utils_1.matchResultAndHandleHttpError)(response, ramda_1.identity);
const { access_token: accessToken, refresh_token: refreshToken } = data;
return (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: `${url}/${configs_apis_1.version1}/integrations/create`,
headers,
data: {
integrationDefinitionId: oauthDetails.sourceIntegrationDefinitionId,
name: payload.label,
group: payload.group,
authFormData: Object.assign({ name: payload.label }, oauthConnection.getOauthFormData({ accessToken, refreshToken })),
},
});
});
exports.createOauthSourceApi = createOauthSourceApi;
const createOauthDestinationApi = (headers, url, payload) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { type, config } = payload;
const { clientId, clientSecret, code, redirectUri } = config;
const oauthConnection = new oauthconnection_1.OauthConnection({
OAUTH_APP_CLIENT_ID: clientId,
OAUTH_APP_CLIENT_SECRET: clientSecret,
type,
});
const oauthDetails = oauthConnection.getOauthDetails();
const response = yield (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: oauthDetails.endpoint,
headers: oauthDetails.headers,
data: {
grant_type: 'authorization_code',
code: code,
redirect_uri: redirectUri,
},
});
const { data } = (0, utils_1.matchResultAndHandleHttpError)(response, ramda_1.identity);
const { access_token: accessToken, refresh_token: refreshToken } = data;
return (0, utils_1.makeHttpNetworkCall)({
method: 'POST',
url: `${url}/${configs_apis_1.version1}/integrations/create`,
headers,
data: {
integrationDefinitionId: oauthDetails.destinationIntegrationDefinitionId,
name: payload.label,
group: payload.group,
authFormData: Object.assign({ name: payload.label }, oauthConnection.getOauthFormData({ accessToken, refreshToken })),
},
});
});
exports.createOauthDestinationApi = createOauthDestinationApi;
//# sourceMappingURL=connection.api.js.map