diff --git a/src/routes/backups.js b/src/routes/backups.js index 3fea992d0..2588a619d 100644 --- a/src/routes/backups.js +++ b/src/routes/backups.js @@ -4,7 +4,8 @@ exports = module.exports = { get: get, - create: create + create: create, + download: download }; var backups = require('../backups.js'), @@ -39,3 +40,14 @@ function create(req, res, next) { next(new HttpSuccess(202, {})); }); } + +function download(req, res, next) { + assert.strictEqual(typeof req.params.backupId, 'string'); + + backups.getRestoreUrl(req.params.backupId, function (error, result) { + if (error) return next(new HttpError(500, error)); + + next(new HttpSuccess(200, result)); + }); +} + diff --git a/src/server.js b/src/server.js index 2a52d4080..64e674014 100644 --- a/src/server.js +++ b/src/server.js @@ -179,6 +179,7 @@ function initializeExpressSync() { // backup routes router.get ('/api/v1/backups', settingsScope, routes.backups.get); router.post('/api/v1/backups', settingsScope, routes.backups.create); + router.get ('/api/v1/backups/:backupId', appsScope, routes.user.requireAdmin, routes.backups.download); // disable server timeout. we use the timeout middleware to handle timeouts on a route level httpServer.setTimeout(0);