structure-event-collector
Version:
Collect arbitrary events
149 lines (115 loc) • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _event = require('../models/event');
var _event2 = _interopRequireDefault(_event);
var _structureRootController = require('structure-root-controller');
var _structureRootController2 = _interopRequireDefault(_structureRootController);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
let mixpanel = null;
let Mixpanel = null;
if (process.env.MIXPANEL_TOKEN) {
Mixpanel = require('mixpanel');
mixpanel = Mixpanel.init(process.env.MIXPANEL_TOKEN);
}
/**
* EventsController Class
*
* @public
* @class EventsController
*/
class EventsController extends _structureRootController2.default {
/**
* EventsController constructor
*
* @public
* @constructor
* @param {Object} options - Options
*/
constructor(options = {}) {
super((0, _assign2.default)({}, {
name: 'events'
}, options));
}
/**
* Create new event
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
create(req, res) {
const event = new _event2.default();
const time = new Date().toISOString();
let pkg = (0, _assign2.default)({}, req.body, {
ip: req.ip,
origin: req.get('Origin') ? req.get('Origin').replace(/^https?:\/\//, '') : '',
referrer: req.get('Referrer'),
time,
useragent: req.get('User-Agent')
});
if (mixpanel) {
let data = req.body.data || null;
let label = (0, _assign2.default)({}, req.body).label;
if (!data) {
data = (0, _assign2.default)({}, req.body);
delete data.label;
}
try {
mixpanel.track(label, data);
} catch (e) {
console.error(e);
}
}
return event.create(pkg);
}
/**
* Delete an event by id
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
deleteById(req, res) {
var event = new _event2.default();
return event.deleteById(req.params.id);
}
/**
* Get event by id
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
getById(req, res) {
const event = new _event2.default();
return event.getById(req.params.id);
}
/**
* Get all events
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
getAll(req, res) {
const event = new _event2.default();
return event.getAll();
}
/**
* Update a event
*
* @public
* @param {Object} req - Express req
* @param {Object} res - Express res
*/
updateById(req, res) {
const event = new _event2.default();
return event.updateById(req.params.id, req.body);
}
}
exports.default = EventsController;
//# sourceMappingURL=event.js.map