uuid = require 'node-uuid'
moment = require 'moment'
middlewares = require '../middleware'
init = require '../api/init'

module.exports = (writer, topic, project, debug=false) ->
  (req, res, next) ->
    req.record = {
      id: uuid.v4()
      url: req.originalUrl
      params:
        query: req.query
        body: req.body
        params: req.params
      project: project
      type: 'node'
      startTime: moment().format('x')
      memo: null
      api: []
    }
    _middlewares = [
      [middlewares.LogMiddleWare, [req.record, debug]]
    ]
    req.api = {
      v1: init 'v1', _middlewares
      v2: init 'v2', _middlewares
      v3: init 'v3', _middlewares
      v3_view: init 'v3_view', _middlewares
      v4: init 'v4', _middlewares
    }
    res.on 'finish', ->
      req.record.code = res.statusCode
      req.record.endTime = moment().format('x')
      writer.publish topic, req.record
    next()