41 lines
894 B
JavaScript
41 lines
894 B
JavaScript
'use strict'
|
|
|
|
const { dns } = require('concordant')()
|
|
const redis = require('redis')
|
|
|
|
module.exports = eventLogger
|
|
|
|
function eventLogger () {
|
|
const QNAME = 'eventservice'
|
|
var client
|
|
|
|
const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
|
|
dns.resolve(endpoint, (err, locs) => {
|
|
if (err) {
|
|
console.error(err)
|
|
return
|
|
}
|
|
const { port, host } = locs[0]
|
|
client = redis.createClient(port, host)
|
|
})
|
|
|
|
function middleware (req, res, next) {
|
|
if (!client) {
|
|
console.log('client not ready, waiting 100ms')
|
|
setTimeout(middleware, 100, req, res, next)
|
|
return
|
|
}
|
|
const event = {
|
|
action: 'record',
|
|
type: 'page',
|
|
url: `${req.protocol}://${req.get('host')}${req.originalUrl}`
|
|
}
|
|
client.lpush(QNAME, JSON.stringify(event), (err) => {
|
|
if (err) console.error(err)
|
|
next()
|
|
})
|
|
}
|
|
|
|
return middleware
|
|
}
|