|
|
const _ = require('lodash') const axios = require('axios') const bugsnag = require('bugsnag') const path = require('path') const uuid = require('uuid/v4')
/* global WIKI */
module.exports = { cid: '', enabled: false, init() { this.cid = uuid() bugsnag.register(WIKI.data.telemetry.BUGSNAG_ID, { appVersion: WIKI.version, autoNotify: false, hostname: this.cid, notifyReleaseStages: ['production'], packageJSON: path.join(WIKI.ROOTPATH, 'package.json'), projectRoot: WIKI.ROOTPATH, useSSL: true }) bugsnag.onBeforeNotify((notification, originalError) => { if (!this.enabled) { return false } })
if (_.get(WIKI.config, 'logging.telemetry', false) === true) { this.enabled = true }
return this }, sendError(err) { bugsnag.notify(err, { userId: this.cid }) }, sendEvent(eventCategory, eventAction, eventLabel) { if (!this.enabled) { return false } axios({ method: 'post', url: WIKI.data.telemetry.GA_REMOTE, headers: { 'Content-type': 'application/x-www-form-urlencoded' }, params: { v: 1, // API version
tid: WIKI.data.telemetry.GA_ID, // Tracking ID
aip: 1, // Anonymize IP
ds: 'server', // Data source
cid: this.cid, // Client ID
t: 'event', // Hit Type
ec: eventCategory, // Event Category
ea: eventAction, // Event Action
el: eventLabel // Event Label
} }).then(resp => { if (resp.status !== 200) { WIKI.logger.warn('Unable to send analytics telemetry request.') } }, err => { WIKI.logger.warn('Unable to send analytics telemetry request.') }) } }
|