@tangible/jitsu-bento-destination
Version:
Bento destination plugin for Jitsu
69 lines (63 loc) • 2.52 kB
text/typescript
import {JitsuBento, BentoDestinationConfig} from "./bentonow-destination";
import {ConfigValidator, DestinationFunction, ExtensionDescriptor} from "@jitsu/types/extension";
const destination: DestinationFunction = JitsuBento
const validator: ConfigValidator<BentoDestinationConfig> = async (config) => {
['site_key', 'your_integration_name'].forEach(prop => {
if (config[prop] === undefined) {
throw new Error(`Required property '${prop}' is absent in config. Present props: ${Object.keys(config)}`);
}
})
const urlEvent = "https://track.bentonow.com/webhooks/"+config.site_key+"/"+config.your_integration_name+"/track";
let data = JSON.stringify({
name: "Jitsu Config validator name test",
domain: "validator.domain.test",
url: "http://validator.domain.test/url"
})
let res = await fetch(urlEvent, {
method: 'post',
headers: {
"Content-Type": "application/json"
},
body: data
});
if (res.headers?.get('Content-Type') === "application/json; charset=utf-8") {
if (res.status === 201) {
return {ok: true}
} else {
return {ok: false, message: `Response status:${res.status} from url:${urlEvent}`}
}
} else {
return {ok: false, message: `Error Code: ${res.status} msg: ${await res.text()}`}
}
}
const descriptor: ExtensionDescriptor<BentoDestinationConfig> = {
id: "jitsu-bento-destination",
displayName: "bento",
icon: "",
description: "Jitsu can send events from JS SDK or Events API to Bento API filling as much Bento Events " +
"Properties as possible from original event data.",
configurationParameters: [
{
id: "anonymous",
type: "boolean",
required: false,
displayName: "Send anonymous data",
documentation: "Send anonymous data to Plausbile if true or all data including user data if false.",
},
{
id: "site_key",
type: "string",
required: true,
displayName: "Bento Site Key/UUID",
documentation: "Bento Site Key/UUID",
},
{
id: "your_integration_name",
type: "string",
required: true,
displayName: "Your integration name configured in Bento",
documentation: "Your integration name configured in Bento",
}
],
}
export {descriptor, destination, validator}