diff --git a/src/settings.js b/src/settings.js index 21b6fa397..f0e376d79 100644 --- a/src/settings.js +++ b/src/settings.js @@ -30,6 +30,9 @@ exports = module.exports = { getUpdateConfig: getUpdateConfig, setUpdateConfig: setUpdateConfig, + getAppstoreConfig: getAppstoreConfig, + setAppstoreConfig: setAppstoreConfig, + getDefaultSync: getDefaultSync, getAll: getAll, @@ -41,6 +44,7 @@ exports = module.exports = { BACKUP_CONFIG_KEY: 'backup_config', TLS_CONFIG_KEY: 'tls_config', UPDATE_CONFIG_KEY: 'update_config', + APPSTORE_CONFIG_KEY: 'appstore_config', events: new (require('events').EventEmitter)() }; @@ -71,6 +75,7 @@ var gDefaults = (function () { result[exports.BACKUP_CONFIG_KEY] = { }; result[exports.TLS_CONFIG_KEY] = { provider: 'caas' }; result[exports.UPDATE_CONFIG_KEY] = { prerelease: false }; + result[exports.APPSTORE_CONFIG_KEY] = { }; return result; })(); @@ -405,6 +410,30 @@ function setUpdateConfig(updateConfig, callback) { }); } +function getAppstoreConfig(callback) { + assert.strictEqual(typeof callback, 'function'); + + settingsdb.get(exports.APPSTORE_CONFIG_KEY, function (error, value) { + if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.APPSTORE_CONFIG_KEY]); + if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error)); + + callback(null, JSON.parse(value)); + }); +} + +function setAppstoreConfig(appstoreConfig, callback) { + assert.strictEqual(typeof appstoreConfig, 'object'); + assert.strictEqual(typeof callback, 'function'); + + settingsdb.set(exports.APPSTORE_CONFIG_KEY, JSON.stringify(appstoreConfig), function (error) { + if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error)); + + exports.events.emit(exports.APPSTORE_CONFIG_KEY, appstoreConfig); + + callback(null); + }); +} + function getDefaultSync(name) { assert.strictEqual(typeof name, 'string');