Skip to content

Commit

Permalink
Keen JS integration
Browse files Browse the repository at this point in the history
  • Loading branch information
prabrisha-rudder authored and sayan-rudder committed Feb 17, 2020
1 parent 2219b7f commit 18b9d0f
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 1 deletion.
122 changes: 122 additions & 0 deletions integrations/Keen/browser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import logger from "../../utils/logUtil";
import { ScriptLoader } from "../ScriptLoader";
class Keen {
constructor(config) {
this.projectID = config.projectID;
this.writeKey = config.writeKey;
this.ipAddon = config.ipAddon;
this.uaAddon = config.uaAddon;
this.urlAddon = config.urlAddon;
this.referrerAddon = config.referrerAddon;
this.client = null;
this.name = "KEEN";
}

init() {
logger.debug("===in init Keen===");
ScriptLoader("keen-integration", 'https://cdn.jsdelivr.net/npm/keen-tracking@4');

var check = setInterval(checkAndInitKeen.bind(this), 1000);
function initKeen(object){
object.client = new window.KeenTracking({
projectId: object.projectID,
writeKey: object.writeKey
});
logger.debug(object.client)
return object.client
}
function checkAndInitKeen(){
if(window.KeenTracking !== undefined && window.KeenTracking !== void 0 ){
this.client = initKeen(this)
clearInterval(check)
}
}
}

identify(rudderElement) {
logger.debug("in Keen identify");
let traits = rudderElement.message.context.traits;
let userId = rudderElement.message.userId ? rudderElement.message.userId : rudderElement.message.anonymousId;
let properties = rudderElement.message.properties ? Object.assign(properties, rudderElement.message.properties) : {}
properties.visitor = {
guest_id: userId,
traits: traits
}
properties = this.getAddOn(properties)
this.client.extendEvents(properties);
}

track(rudderElement) {
logger.debug("in Keen track");

var event = rudderElement.message.event
var properties = rudderElement.message.properties
properties = this.getAddOn(properties)
this.client.recordEvent(event, properties)
}

page(rudderElement) {
logger.debug("in Keen page");
var name = rudderElement.message.name ? rudderElement.message.name : "Loaded a Page"
var properties = rudderElement.message.properties
properties = this.getAddOn(properties)
this.client.recordEvent(name, properties)
}

isLoaded() {
logger.debug("in Keen isLoaded");
return !!(this.client != null)
}

getAddOn(properties){
var addOns = []
if(this.ipAddon){
properties.ip_address = '${keen.ip}'
addOns.push({
name: 'keen:ip_to_geo',
input: {
ip: 'ip_address'
},
output: 'ip_geo_info'
});
}
if(this.uaAddon){
properties.user_agent = '${keen.user_agent}'
addOns.push({
name: 'keen:ua_parser',
input: {
ua_string: 'user_agent'
},
output: 'parsed_user_agent'
});
}
if(this.urlAddon){
properties.page_url = document.location.href
addOns.push({
name: 'keen:url_parser',
input: {
url: 'page_url'
},
output: 'parsed_page_url'
});
}
if(this.referrerAddon){
properties.page_url = document.location.href
properties.referrer_url = document.referrer;
addOns.push({
name: 'keen:referrer_parser',
input: {
referrer_url: 'referrer_url',
page_url: 'page_url'
},
output: 'referrer_info'
});
}
properties.keen = {
addons : addOns
}
return properties
}
}

export { Keen };
3 changes: 3 additions & 0 deletions integrations/Keen/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { Keen } from "./browser";

export default Keen;
4 changes: 3 additions & 1 deletion integrations/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as VWO from "./VWO";
import * as GoogleTagManager from "./GoogleTagManager";
import * as Braze from "./Braze";
import * as INTERCOM from "./INTERCOM";
import * as Keen from "./Keen";

let integrations = {
HS: HubSpot.default,
Expand All @@ -15,7 +16,8 @@ let integrations = {
VWO: VWO.default,
GTM: GoogleTagManager.default,
BRAZE: Braze.default,
INTERCOM: INTERCOM.default
INTERCOM: INTERCOM.default,
KEEN: Keen.default
};

export { integrations };

0 comments on commit 18b9d0f

Please sign in to comment.