// # Configuration API // RESTful API for browsing the configuration var _ = require('lodash'), config = require('../config'), errors = require('../errors'), parsePackageJson = require('../require-tree').parsePackageJson, Promise = require('bluebird'), configuration; function getValidKeys() { var validKeys = { fileStorage: config.fileStorage === false ? false : true, apps: config.apps === true ? true : false, version: false, environment: process.env.NODE_ENV, database: config.database.client, mail: _.isObject(config.mail) ? config.mail.transport : '', blogUrl: config.url }; return parsePackageJson('package.json').then(function (json) { validKeys.version = json.version; return validKeys; }); } /** * ## Configuration API Methods * * **See:** [API Methods](index.js.html#api%20methods) */ configuration = { /** * ### Browse * Fetch all configuration keys * @returns {Promise(Configurations)} */ browse: function browse() { return getValidKeys().then(function (result) { return Promise.resolve({configuration: _.map(result, function (value, key) { return { key: key, value: value }; })}); }); }, /** * ### Read * */ read: function read(options) { return getValidKeys().then(function (result) { if (_.has(result, options.key)) { return Promise.resolve({configuration: [{ key: options.key, value: result[options.key] }]}); } else { return Promise.reject(new errors.NotFoundError('Invalid key')); } }); } }; module.exports = configuration;