backend/fastify/mixpanel/server.js
2024-05-26 22:28:08 +02:00

73 lines
1.4 KiB
JavaScript
Executable File

// Declare a route
module.exports = function (fastify, opts, done) {
const mixpanel = opts.mixpanel;
const UAParser = opts.UAParser;
fastify.post('/mixpanel', async (request, reply) => {
const data = request.body;
const { browser, cpu, device, os } = UAParser(data.userAgent)
let options = {
path: data.path,
browser: browser.name,
browser_version: browser.version,
device: device.vendor,
cpu: cpu.architecture,
os: os.name,
}
if (data.type === 'trackPageError')
{
options.status = data.status;
options.message = data.message;
mixpanel.track('Error status', options);
console.log('Send error page data to mixpanel')
}
else if (data.type === 'trackPageVisit')
{
mixpanel.track('Page Visit', options);
}
else if (data.type === 'trackPageDuration')
{
options.time_spent = data.time;
mixpanel.track('Page Duration', options);
}
else if (data.type === 'trackAsset')
{
const options = {
symbol: data.symbol,
assetType: data.assetType,
}
mixpanel.track('asset', options);
}
else if (data.type === 'trackButton')
{
const options = {
name: data.name,
}
mixpanel.track('buttonClick', options);
}
reply.send({ message: 'success' })
})
done();
};