import { CreateDestinationConnectionPayload, DestinationPlatforms } from '@buildable/types';
import {  matchResultAndHandleHttpError } from '@buildable/utils';
import { identity } from 'ramda';
import { createDestinationConnectionApi } from '../../apis';
import { version1 } from '../../apis/configs.apis';
import { Client } from '../../client';
import { getHeaders } from '../getHeaders';

export const createDestination = async <T extends DestinationPlatforms>(
	client: Client,
	payload: CreateDestinationConnectionPayload<T>
) => {
	const secret = client._clientInfo.secret;
	const url = `${client._url}/${version1}/integrations/create`;
	const result = await createDestinationConnectionApi(
		getHeaders(secret),
		url,
		payload
	);
	const { data } = matchResultAndHandleHttpError(
		result,
		identity
	);
	return data;
};

