Prevent multiple concurrent requests for packages

Fixes #38
Fixes #41
This commit is contained in:
MICHAEL JACKSON
2017-08-10 22:11:55 -07:00
parent cb8061f3e1
commit a485858381
9 changed files with 207 additions and 200 deletions

View File

@ -3,28 +3,26 @@ const { parsePackageURL } = require('./PackageUtils')
/**
* Parse and validate the URL.
*/
function parseURL() {
return function (req, res, next) {
let url
try {
url = parsePackageURL(req.url)
} catch (error) {
return res.status(403).send(`Invalid URL: ${req.url}`)
}
if (url == null)
return res.status(403).send(`Invalid URL: ${req.url}`)
req.packageName = url.packageName
req.packageVersion = url.packageVersion
req.packageSpec = `${req.packageName}@${req.packageVersion}`
req.pathname = url.pathname
req.filename = url.filename
req.search = url.search
req.query = url.query
next()
function parseURL(req, res, next) {
let url
try {
url = parsePackageURL(req.url)
} catch (error) {
return res.status(403).send(`Invalid URL: ${req.url}`)
}
if (url == null)
return res.status(403).send(`Invalid URL: ${req.url}`)
req.packageName = url.packageName
req.packageVersion = url.packageVersion
req.packageSpec = `${req.packageName}@${req.packageVersion}`
req.pathname = url.pathname
req.filename = url.filename
req.search = url.search
req.query = url.query
next()
}
module.exports = parseURL