import redis from 'redis'
import onFinished from 'on-finished'

const URLFormat = /^\/((?:@[^\/@]+\/)?[^\/@]+)(?:@([^\/]+))?(\/.*)?$/

export const logStats = (redisURL) => {
  const redisClient = redis.createClient(redisURL)

  return (req, res, next) => {
    onFinished(res, () => {
      const path = req.path

      if (res.statusCode === 200 && path.charAt(path.length - 1) !== '/') {
        //redisClient.zincrby([ 'request-paths', 1, path ])

        const match = URLFormat.exec(path)

        if (match) {
          const packageName = match[1]
          redisClient.zincrby([ 'package-requests', 1, packageName ])
        }
      }
    })

    next()
  }
}