mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 12:17:08 +00:00
Add API files endpoint.
Used to download files. It relies on `imports.paths` being set appropriately in `etc/config.yaml` to indicate which parts of the filesystem are accessible to users via Dougal.
This commit is contained in:
@@ -252,6 +252,12 @@ app.map({
|
||||
// // post: [ mw.permissions.post ],
|
||||
// // delete: [ mw.permissions.delete ]
|
||||
// },
|
||||
'/project/:project/files/:path(*)': {
|
||||
get: [ mw.auth.access.write, mw.files.get ]
|
||||
},
|
||||
'/files/?:path(*)': {
|
||||
get: [ mw.auth.access.write, mw.files.get ]
|
||||
},
|
||||
'/navdata/': {
|
||||
get: [ mw.navdata.get ],
|
||||
'gis/:featuretype(line|point)': {
|
||||
|
||||
0
lib/www/server/api/middleware/files/delete.js
Normal file
0
lib/www/server/api/middleware/files/delete.js
Normal file
29
lib/www/server/api/middleware/files/get.js
Normal file
29
lib/www/server/api/middleware/files/get.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const files = require('../../../lib/files');
|
||||
|
||||
module.exports = async function (req, res, next) {
|
||||
|
||||
try {
|
||||
const entity = await files.get(req.params.path, req.params.project, req.query);
|
||||
if (entity) {
|
||||
if (entity.download) {
|
||||
res.download(...entity.download, (err) => next(err));
|
||||
} else {
|
||||
// Directory listing
|
||||
res.status(203).json(entity);
|
||||
next();
|
||||
}
|
||||
} else {
|
||||
throw {
|
||||
status: 404,
|
||||
code: "ENOENT"
|
||||
};
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.code == 'ENOENT') {
|
||||
res.status(404).json({message: err.code});
|
||||
} else {
|
||||
next(err);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
7
lib/www/server/api/middleware/files/index.js
Normal file
7
lib/www/server/api/middleware/files/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
module.exports = {
|
||||
get: require('./get'),
|
||||
post: require('./post'),
|
||||
put: require('./put'),
|
||||
delete: require('./delete')
|
||||
}
|
||||
0
lib/www/server/api/middleware/files/post.js
Normal file
0
lib/www/server/api/middleware/files/post.js
Normal file
0
lib/www/server/api/middleware/files/put.js
Normal file
0
lib/www/server/api/middleware/files/put.js
Normal file
@@ -1,5 +1,6 @@
|
||||
module.exports = {
|
||||
event: require('./event'),
|
||||
files: require('./files'),
|
||||
plan: require('./plan'),
|
||||
line: require('./line'),
|
||||
project: require('./project'),
|
||||
|
||||
Reference in New Issue
Block a user