castleio-sdk
Version:
The castle.io SDK for Node.js
35 lines (28 loc) • 999 B
JavaScript
;
import Events from './events-compiled.js';
module.exports = function (castle, events = Events) {
return function (request, response, next) {
function injectClientData(data) {
data.headers = request.headers || undefined;
data.ip = request.ip || undefined;
data.cookie = (request.cookies || {})['__cid'] || undefined;
data.userAgent = (request.headers || {})['user-agent'] || '';
return data;
}
request.castleTrackEvent = function ({event, user_id, details}) {
return castle.trackEvent(injectClientData({
event,
user_id,
details
}));
};
request.castleIdentify = function ({user_id, user_data}) {
return castle.identify(injectClientData({
user_id,
user_data
}));
};
request.castleEvents = events;
next();
}
};