diff --git a/src/developer.js b/src/developer.js index 498813d5a..f6251bf67 100644 --- a/src/developer.js +++ b/src/developer.js @@ -7,12 +7,15 @@ exports = module.exports = { enabled: enabled, setEnabled: setEnabled, - issueDeveloperToken: issueDeveloperToken + issueDeveloperToken: issueDeveloperToken, + getNonApprovedApps: getNonApprovedApps }; var assert = require('assert'), + config = require('./config.js'), tokendb = require('./tokendb.js'), settings = require('./settings.js'), + superagent = require('superagent'), util = require('util'); function DeveloperError(reason, errorOrMessage) { @@ -68,3 +71,15 @@ function issueDeveloperToken(user, callback) { callback(null, { token: token, expiresAt: expiresAt }); }); } + +function getNonApprovedApps(callback) { + assert.strictEqual(typeof callback, 'function'); + + var url = config.apiServerOrigin() + '/api/v1/boxes/' + config.fqdn() + '/apps'; + superagent.get(url).query({ token: config.token(), boxVersion: config.version() }).end(function (error, result) { + if (error) return callback(new DeveloperError(DeveloperError.INTERNAL_ERROR, error)); + if (result.status !== 200) return callback(new DeveloperError(DeveloperError.INTERNAL_ERROR, util.format('App listing failed. %s %j', result.status, result.body))); + + callback(null, result.apps); + }); +} diff --git a/src/routes/developer.js b/src/routes/developer.js index 8fc1b1f45..794a40037 100644 --- a/src/routes/developer.js +++ b/src/routes/developer.js @@ -6,7 +6,8 @@ exports = module.exports = { enabled: enabled, setEnabled: setEnabled, status: status, - login: login + login: login, + apps: apps }; var developer = require('../developer.js'), @@ -46,3 +47,10 @@ function login(req, res, next) { }); })(req, res, next); } + +function apps(req, res, next) { + developer.getNonApprovedApps(function (error, result) { + if (error) return next(new HttpError(500, error)); + next(new HttpSuccess(200, { apps: result })); + }); +} \ No newline at end of file diff --git a/src/server.js b/src/server.js index f5a483c3a..739285ba3 100644 --- a/src/server.js +++ b/src/server.js @@ -92,6 +92,7 @@ function initializeExpressSync() { router.post('/api/v1/developer', developerScope, routes.user.requireAdmin, routes.user.verifyPassword, routes.developer.setEnabled); router.get ('/api/v1/developer', developerScope, routes.developer.enabled, routes.developer.status); router.post('/api/v1/developer/login', routes.developer.enabled, routes.developer.login); + router.get ('/api/v1/developer/apps', developerScope, routes.developer.enabled, routes.developer.apps); // private routes router.get ('/api/v1/cloudron/config', rootScope, routes.cloudron.getConfig);