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.

102 lines (91 loc) 2.2 kB
import { IntegrationRecord, DestinationPlatforms, CreateDestinationConnectionPayload, DeleteDestinationPayload, ListDestinationsPayload, Integrations, WEBHOOK, } from '@event-inc/types'; import { makeHttpNetworkCall, checkIfKeyOrIdExists } from '@event-inc/utils'; import { getIntegrationDefinitionId } from '@event-inc/utils'; import { version1 } from './configs.apis'; export const createDestinationConnectionApi = <T extends DestinationPlatforms>( headers: Record<string, string>, url: string, payload: CreateDestinationConnectionPayload<T> ) => { const integrationDefinitionId = getIntegrationDefinitionId( payload.type, 'destination' ); const authData = { name: payload.label, ...payload.config, }; const finalPayload = { integrationDefinitionId, authFormData: authData, type: payload.type, group: payload.group, name: payload.label, key: payload.key, }; if (payload.type === 'webhook') { const webhookAuthFormData = finalPayload?.authFormData as WEBHOOK; const webhookHeaders = webhookAuthFormData?.WEBHOOK_HEADERS || { 'Content-Type': 'application/json', }; finalPayload.authFormData = { ...finalPayload.authFormData, WEBHOOK_HEADERS: JSON.stringify(webhookHeaders), }; } return makeHttpNetworkCall<IntegrationRecord>({ method: 'POST', url: `${url}/${version1}/integrations/create`, data: finalPayload, headers, }); }; export const deleteDestinationConnectionApi = ( headers: Record<string, string>, url: string, payload: DeleteDestinationPayload ) => { const { id, key } = payload; checkIfKeyOrIdExists( id, key, 'Must provide either id or key to delete a destination' ); return makeHttpNetworkCall({ method: 'POST', url: `${url}/${version1}/integrations/delete`, data: { integrationId: id, key, }, headers, }); }; export const listDestinationsApi = ( headers: Record<string, string>, url: string, payload: ListDestinationsPayload ) => { return makeHttpNetworkCall<Integrations>({ method: 'POST', url: `${url}/${version1}/integrations/list`, data: { ...payload, query: { ...payload?.query, _id: { $regex: 'conn_dst', }, }, }, headers, }); };