UNPKG

@tangible/jitsu-elasticsearch-destination

Version:
53 lines (45 loc) 1.69 kB
import {DefaultJitsuEvent} from "@jitsu/types/event"; import {DestinationFunction, DestinationMessage, JitsuDestinationContext} from "@jitsu/types/extension"; export type ElasticsearchDestinationConfig = { anonymous?: boolean, elasticsearch_domain: string, elasticsearch_port: string, elasticsearch_target: string, elasticsearch_apikey: string, } export const JitsuElasticsearch: DestinationFunction<DefaultJitsuEvent, ElasticsearchDestinationConfig> = (event: DefaultJitsuEvent, dstContext: JitsuDestinationContext<ElasticsearchDestinationConfig>) => { const context = event.eventn_ctx || event; const config = dstContext.config // Remove JITSU fields if(context.JITSU_ENVELOP){ delete context["JITSU_ENVELOP"]; } if(context.__HTTP_CONTEXT__){ delete context["__HTTP_CONTEXT__"]; } if(config.anonymous){ context.source_ip = "000.000.000.000"; // masl ip if(context.ids){ context.ids.ga = "undefined"; // mask ga } } const myHeaders = { "Authorization": "ApiKey "+config.elasticsearch_apikey, "Content-Type": "application/json", "User-Agent": context.user_agent, "X-Forwarded-For": context.source_ip, } var posturl = config.elasticsearch_domain; if(typeof config.elasticsearch_port !== "undefined" && config.elasticsearch_port !== ""){ posturl = posturl + ":" + config.elasticsearch_port } posturl = posturl + "/" + config.elasticsearch_target + "/_doc/" let envelops:DestinationMessage[] = []; envelops.push({ method: "POST", url: posturl, headers: myHeaders, body:context }); return envelops; }