blob: 986d9537cf9b8136434701dbf81cdab4872b7374 [file] [edit]
'use strict';
var debug = require('debug')('plugin:analytics');
var volos = require('volos-analytics-apigee');
module.exports.init = function(config, logger, stats) {
config.finalizeRecord = function finalizeRecord(req, res, record, cb) {
if (res.proxy) {
record.apiproxy = res.proxy.name;
record.apiproxy_revision = res.proxy.revision;
}
if(config.mask_request_uri) {
record.request_uri = config.mask_request_uri;
}
if(config.mask_request_path) {
record.request_path = config.mask_request_path;
}
var xffHeader = req.headers['x-forwarded-for'];
if(xffHeader) {
record.client_ip = xffHeader;
}
cb(null, record);
};
var analytics = volos.create(config);
var middleware = analytics.expressMiddleWare().apply();
return {
testprobe: function() { return analytics },
onrequest: function(req, res, next) {
try {
middleware(req, res, next);
} catch (e) {
console.error("Error encountered when attempting to push analytics to Apigee cloud. Continuing request ", e);
next();
}
}
};
}