const parsePackageURL = require("../utils/parsePackageURL")

/**
 * Adds various properties to the request object to do with the
 * package/file being requested.
 */
function validatePackageURL(req, res, next) {
  const url = parsePackageURL(req.url)

  if (url == null) {
    return res.status(403).send({ error: `Invalid URL: ${req.url}` })
  }

  req.packageName = url.packageName
  req.packageVersion = url.packageVersion
  req.packageSpec = `${url.packageName}@${url.packageVersion}`
  req.pathname = url.pathname
  req.filename = url.filename
  req.search = url.search
  req.query = url.query

  next()
}

module.exports = validatePackageURL