2019-01-06 00:50:05 +00:00
|
|
|
import parsePackageURL from '../utils/parsePackageURL';
|
2017-11-15 00:47:57 +00:00
|
|
|
|
|
|
|
/**
|
2018-05-19 15:34:36 +00:00
|
|
|
* Parse the URL and add various properties to the request object to
|
|
|
|
* do with the package/file being requested. Reject invalid URLs.
|
2017-11-15 00:47:57 +00:00
|
|
|
*/
|
2019-01-06 00:50:05 +00:00
|
|
|
export default function validatePackageURL(req, res, next) {
|
2018-02-18 02:00:56 +00:00
|
|
|
const url = parsePackageURL(req.url);
|
2017-11-15 00:47:57 +00:00
|
|
|
|
|
|
|
if (url == null) {
|
2018-02-18 02:00:56 +00:00
|
|
|
return res.status(403).send({ error: `Invalid URL: ${req.url}` });
|
2017-11-15 00:47:57 +00:00
|
|
|
}
|
|
|
|
|
2018-02-18 02:00:56 +00:00
|
|
|
req.packageName = url.packageName;
|
|
|
|
req.packageVersion = url.packageVersion;
|
|
|
|
req.packageSpec = `${url.packageName}@${url.packageVersion}`;
|
2018-05-19 15:34:36 +00:00
|
|
|
req.pathname = url.pathname; // TODO: remove
|
2018-02-18 02:00:56 +00:00
|
|
|
req.filename = url.filename;
|
|
|
|
req.search = url.search;
|
|
|
|
req.query = url.query;
|
2017-11-15 00:47:57 +00:00
|
|
|
|
2018-02-18 02:00:56 +00:00
|
|
|
next();
|
2017-11-15 00:47:57 +00:00
|
|
|
}
|