| '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(); |
| } |
| } |
| |
| }; |
| |
| } |