diff --git a/src/routes/apps.js b/src/routes/apps.js index 50e2c7b4f..a0eda8ea8 100644 --- a/src/routes/apps.js +++ b/src/routes/apps.js @@ -15,6 +15,7 @@ exports = module.exports = { updateApp: updateApp, getLogs: getLogs, getLogStream: getLogStream, + listBackups: listBackups, stopApp: stopApp, startApp: startApp, @@ -373,3 +374,14 @@ function exec(req, res, next) { res.socket.pipe(duplexStream); }); } + +function listBackups(req, res, next) { + assert.strictEqual(typeof req.params.id, 'string'); + + apps.listBackups(function (error, result) { + if (error && error.reason === AppsError.NOT_FOUND) return next(new HttpError(404, 'No such app')); + if (error) return next(new HttpError(500, error)); + + next(new HttpSuccess(200, { backups: result })); + }); +} diff --git a/src/server.js b/src/server.js index a337c3edf..08854c447 100644 --- a/src/server.js +++ b/src/server.js @@ -144,6 +144,7 @@ function initializeExpressSync() { router.post('/api/v1/apps/:id/update', appsScope, routes.user.requireAdmin, routes.user.verifyPassword, routes.apps.updateApp); router.post('/api/v1/apps/:id/restore', appsScope, routes.user.requireAdmin, routes.user.verifyPassword, routes.apps.restoreApp); router.post('/api/v1/apps/:id/backup', appsScope, routes.user.requireAdmin, routes.apps.backupApp); + router.get ('/api/v1/apps/:id/backups', appsScope, routes.user.requireAdmin, routes.apps.listBackups); router.post('/api/v1/apps/:id/stop', appsScope, routes.user.requireAdmin, routes.apps.stopApp); router.post('/api/v1/apps/:id/start', appsScope, routes.user.requireAdmin, routes.apps.startApp); router.get ('/api/v1/apps/:id/logstream', appsScope, routes.user.requireAdmin, routes.apps.getLogStream);